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
85
TypeScriptの型で2進数計算
Riya Amemiya
February 04, 2024
Tweet
Share
More Decks by Riya Amemiya
See All by Riya Amemiya
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
690
AIの力でテストのガバレッジ100%にした話
riyaamemiya
0
390
RailsからReactを剥がした話
riyaamemiya
0
530
Other Decks in Technology
See All in Technology
RailsConf 2024 Keynote "Startups on Rails in 2024"
irinanazarova
0
800
Cloudflare WorkersがPythonに対応したので試してみた
miura55
0
190
SWC Transformerから見るTypeScript関数記述ベストプラクティス
fujiyamaorange
1
180
知識と実践を紡ぐGenAI / Connecting Knowledge and experience with GenAI
aki_moon
2
180
複雑なビジネスルールに挑む:正確性と効率性を両立するfp-tsのチーム活用術 / Strike a balance between correctness and efficiency with fp-ts
kakehashi
5
3.5k
DevRelによる信頼構築とデータ駆動で変わるエンジニア採用 / DevRel Trust Building to Data Driven Engineering Hiring
bobtani
1
130
From here to resilience - a travel guide
ufried
1
160
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
0
2k
RubyKaigi 2024 - Make Your Own Regex Engine!
makenowjust
0
150
【リラン】AIの光と闇?失敗しないために知っておきたいAIリスクとその対応 ①政府の動き編
tkhresk
0
140
技術力の伸ばし方を考える
khirata
0
140
回り回って効いてくる副次的効果としての技術広報/techpr
nishiuma
1
180
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Happy Clients
brianwarren
92
6.4k
The Brand Is Dead. Long Live the Brand.
mthomps
49
30k
Web Components: a chance to create the future
zenorocha
306
41k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
Making the Leap to Tech Lead
cromwellryan
125
8.6k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
[RailsConf 2023] Rails as a piece of cake
palkan
28
4.1k
The Art of Programming - Codeland 2020
erikaheidi
43
12k
Teambox: Starting and Learning
jrom
128
8.4k
Bash Introduction
62gerente
605
210k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
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