Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TypeScriptの型で2進数計算
Search
Riya Amemiya
February 04, 2024
Technology
0
92
TypeScriptの型で2進数計算
Riya Amemiya
February 04, 2024
Tweet
Share
More Decks by Riya Amemiya
See All by Riya Amemiya
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
710
AIの力でテストのガバレッジ100%にした話
riyaamemiya
0
400
RailsからReactを剥がした話
riyaamemiya
0
540
Other Decks in Technology
See All in Technology
APIライフサイクル管理とAI Gateway
hashitokyo
2
170
GopherDay Taiwan 2024 - 利用 Gemini Pro 與 Golang 打造創新智能的 LINE Bot 應用
line_developers_tw
PRO
0
230
組織的なクラウド統制のはじめの一歩 後編
nyankotaro
0
240
Oracle Database Technology Night #79 - Oracle Database 23ai 新機能 Oracle Advanced Cluster File System (ACFS)
oracle4engineer
PRO
1
110
継続性視点での開発生産性マネジメント / Managing Engineering Organization in a Strategic Way
sms_tech
10
1.6k
Deep Dive: Change Detection
rainerhahnekamp
0
180
Platform Engineering on Serverless
_kensh
3
420
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
39k
Custom Query で監視が捗った話 / Monitoring with Custom Query
akitok_
0
150
SREがいない”今いる場所”で 「SRE」について聞いて、考えてみた
maimyyym
1
210
意義から考えるObservability入門 #srenext
stefafafan
2
820
誰も教えてくれない メダリオンアーキテクチャの デザインメソッド
manabian
0
350
Featured
See All Featured
BBQ
matthewcrist
80
8.8k
Atom: Resistance is Futile
akmur
260
25k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
34
6.1k
Git: the NoSQL Database
bkeepers
PRO
423
63k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
358
22k
The Cult of Friendly URLs
andyhume
74
5.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
126
32k
Practical Orchestrator
shlominoach
183
9.8k
Visualization
eitanlees
137
14k
Producing Creativity
orderedlist
PRO
338
39k
We Have a Design System, Now What?
morganepeng
43
6.8k
Transcript
TypeScript の型で2 進数計算 西悠太(GMO メディア)
自己紹介 名前: 西悠太 所属: GMO メディア フロントエンドエンジニア X: Riya31377928 https://riya-amemiya-links.oshaburikitchin.com/
なぜ作ったの? とある本でCPUが2進数を計算する仕組み を学んで、あれ?これって型でも実装できる んじゃね?と思って書きました
どんなことができるの?
2進数の計算方法 加算 結果が2なら、1を繰り上げ 減算 1から0を引く場合、左の桁から1を借りる 補数で計算して、オーバーフローは切り捨て
どうやって作る? 2進数の計算方法はわかったけど じゃあどうやれば計算できるの? TypeScriptの型システムに +とか-の演算子はないし.... 論理回路があればできるなら...
どうやって作る? 論理回路を型システムの上に 実装しちゃえばいいんだ! AND OR XOR
None
半加算器を実装する 単純に二数の和のみを求める回路 AND回路とXOR回路が必要 次に作る全加算器の実装に必要
AND回路
XOR回路
半加算器
全加算器を実装する 任意の桁数の2進数の加算、減算ができる 半加算器とOR回路が必要 今回は符号付きで考える
OR回路
材料は揃ったけど... 全加算器には半加算器とOR回路が必要 inferは先頭1文字を取り出す オーバーフローを切り捨てないといけない
N文字取り出す
頭文字を削除
文字列を配列に変換
文字列の長さを取得
文字列を反転
今度こそ材料は揃った! 文字列を反転させる 1. 全加算器に投入 2. 不要な部分を切り捨て 3.
None
完成!
https://zenn.dev/gmomedia/articles/820c58037ef246
None