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
260
0
Share
TypeScriptの型で2進数計算
Riya Amemiya
February 04, 2024
More Decks by Riya Amemiya
See All by Riya Amemiya
知ってた?JavaScriptの"正しさ"を検証するテストが5万以上もあること(Test262)
riyaamemiya
1
170
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
12
5.7k
そのJavaScript、V8が泣いてます。V8の気持ちを理解して書くパフォーマンス最適化
riyaamemiya
22
8.3k
「え?!それ今ではCSSだけでできるの!?」驚きの進化を遂げたモダンCSS
riyaamemiya
1
180
不健康エンジニア「健康」を知る
riyaamemiya
1
1.4k
AIと共同執筆してより質の高い記事を書こう
riyaamemiya
1
700
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
940
AIの力でテストのガバレッジ100%にした話
riyaamemiya
0
1.1k
RailsからReactを剥がした話
riyaamemiya
0
780
Other Decks in Technology
See All in Technology
AIの揺らぎに“コシ”を与える階層化品質設計
ickx
0
270
20260513_生成AIを専属DSに_AI分析結果の検品テクニック_ハンズオン_交通事故データ
doradora09
PRO
0
210
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8k
カオナビに Suspenseを導入するまで / The Road to Suspense at kaonavi
kaonavi
1
440
いつの間にかデータエンジニア以外の業務も増えていたけど、意外と経験が役に立ってる
zozotech
PRO
0
320
全社統制を維持しながら現場負担をどう減らすか〜プラットフォームチームとセキュリティチームで進めたSecurity Hub活用によるAWS統制の見直し〜/secjaws-security-hub-custom-insights
mhrtech
1
170
Building Production-Ready Agents Microsoft Agent Framework
_mertmetin
0
160
マンション備え付けのネットワークとLTE回線を組み合わせた ネットワークの安定化の考案
harutiro
1
110
ボトムアップの改善の火を灯し続けろ!〜支援現場で学んだ、消えないための3つの打ち手〜 / 20260509 Kazuki Mori
shift_evolve
PRO
2
600
Purview 勉強会報告 Microsoft Purview 入門しようとしてみた
masakichixo
1
150
Tachikawa.any 運営挨拶
daitasu
0
140
OWASP APTSを眺めてみた
su3158
0
130
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
560
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Paper Plane (Part 1)
katiecoart
PRO
0
7.2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
230
Test your architecture with Archunit
thirion
1
2.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
340
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
It's Worth the Effort
3n
188
29k
Making Projects Easy
brettharned
120
6.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
380
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