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
210
TypeScriptの型で2進数計算
Riya Amemiya
February 04, 2024
Tweet
Share
More Decks by Riya Amemiya
See All by Riya Amemiya
不健康エンジニア「健康」を知る
riyaamemiya
1
1.1k
AIと共同執筆してより質の高い記事を書こう
riyaamemiya
1
540
社内で発信し続けてたら19歳なのに技術リード的なポジションになっちゃった話
riyaamemiya
0
73
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
890
AIの力でテストのガバレッジ100%にした話
riyaamemiya
0
850
RailsからReactを剥がした話
riyaamemiya
0
680
Other Decks in Technology
See All in Technology
マルチモーダル基盤モデルに基づく動画と音の解析技術
lycorptech_jp
PRO
3
360
人に寄り添うAIエージェントとアーキテクチャ #BetAIDay
layerx
PRO
2
590
【2025 Japan AWS Jr. Champions Ignition】点から線、線から面へ〜僕たちが起こすコラボレーション・ムーブメント〜
amixedcolor
1
110
Gemini in Android Studio - Google I/O Bangkok '25
akexorcist
0
110
Kiroから考える AIコーディングツールの潮流
s4yuba
3
570
AI駆動開発 with MixLeap Study【大阪支部 #3】
lycorptech_jp
PRO
0
290
robocopy の怖い話/scary-story-about-robocopy
emiki
0
420
会社もクラウドも違うけど 通じたコスト削減テクニック/Cost optimization strategies effective regardless of company or cloud provider
aeonpeople
2
410
AI エンジニアの立場からみた、AI コーディング時代の開発の品質向上の取り組みと妄想
soh9834
8
630
CSPヘッダー導入で実現するWebサイトの多層防御:今すぐ試せる設定例と運用知見
llamakko
1
280
完璧を目指さない小さく始める信頼性向上
kakehashi
PRO
0
130
Tableau API連携の罠!?脱スプシを夢見たはずが、逆に依存を深めた話
cuebic9bic
2
180
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.7k
KATA
mclloyd
31
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Unsuck your backbone
ammeep
671
58k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Designing Experiences People Love
moore
142
24k
Visualization
eitanlees
146
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
182
54k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.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