Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TypeScriptの型で2進数計算
Search
Riya Amemiya
February 04, 2024
Technology
0
230
TypeScriptの型で2進数計算
Riya Amemiya
February 04, 2024
Tweet
Share
More Decks by Riya Amemiya
See All by Riya Amemiya
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
12
5.1k
そのJavaScript、V8が泣いてます。V8の気持ちを理解して書くパフォーマンス最適化
riyaamemiya
22
7.8k
「え?!それ今ではCSSだけでできるの!?」驚きの進化を遂げたモダンCSS
riyaamemiya
1
130
不健康エンジニア「健康」を知る
riyaamemiya
1
1.3k
AIと共同執筆してより質の高い記事を書こう
riyaamemiya
1
640
社内で発信し続けてたら19歳なのに技術リード的なポジションになっちゃった話
riyaamemiya
0
130
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
920
AIの力でテストのガバレッジ100%にした話
riyaamemiya
0
1.1k
RailsからReactを剥がした話
riyaamemiya
0
710
Other Decks in Technology
See All in Technology
AWS運用を効率化する!AWS Organizationsを軸にした一元管理の実践/nikkei-tech-talk-202512
nikkei_engineer_recruiting
0
160
特別捜査官等研修会
nomizone
0
530
Amazon Quick Suite で始める手軽な AI エージェント
shimy
1
1.6k
Agent Skillsがハーネスの垣根を超える日
gotalab555
5
3.3k
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
200
SREには開発組織全体で向き合う
koh_naga
0
410
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
200
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
240
【U/Day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
2
1.1k
半年で、AIゼロ知識から AI中心開発組織の変革担当に至るまで
rfdnxbro
0
120
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
1
740
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
HDC tutorial
michielstock
0
260
Designing for Timeless Needs
cassininazir
0
88
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
63
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
0
90
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
1.9k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
23
Fireside Chat
paigeccino
41
3.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
370
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