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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Riya Amemiya
February 04, 2024
Technology
0
240
TypeScriptの型で2進数計算
Riya Amemiya
February 04, 2024
Tweet
Share
More Decks by Riya Amemiya
See All by Riya Amemiya
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
12
5.4k
そのJavaScript、V8が泣いてます。V8の気持ちを理解して書くパフォーマンス最適化
riyaamemiya
22
7.9k
「え?!それ今ではCSSだけでできるの!?」驚きの進化を遂げたモダンCSS
riyaamemiya
1
160
不健康エンジニア「健康」を知る
riyaamemiya
1
1.3k
AIと共同執筆してより質の高い記事を書こう
riyaamemiya
1
660
社内で発信し続けてたら19歳なのに技術リード的なポジションになっちゃった話
riyaamemiya
0
140
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
930
AIの力でテストのガバレッジ100%にした話
riyaamemiya
0
1.1k
RailsからReactを剥がした話
riyaamemiya
0
730
Other Decks in Technology
See All in Technology
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
330
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
4
450
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
330
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
530
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
520
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
370
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.6k
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
4 Signs Your Business is Dying
shpigford
187
22k
Producing Creativity
orderedlist
PRO
348
40k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
63
How to Think Like a Performance Engineer
csswizardry
28
2.5k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
750
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
130
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Being A Developer After 40
akosma
91
590k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
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