Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TypeScriptの型で2進数計算
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Riya Amemiya
February 04, 2024
Technology
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TypeScriptの型で2進数計算
Riya Amemiya
February 04, 2024
More Decks by Riya Amemiya
See All by Riya Amemiya
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
100
V8コントリビュート超入門
riyaamemiya
0
210
IsAny はなぜ any だけを見抜けるのか
riyaamemiya
0
79
V8のTorqueを語りたい
riyaamemiya
0
130
知ってた?JavaScriptの"正しさ"を検証するテストが5万以上もあること(Test262)
riyaamemiya
1
380
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
12
6.1k
そのJavaScript、V8が泣いてます。V8の気持ちを理解して書くパフォーマンス最適化
riyaamemiya
22
8.9k
「え?!それ今ではCSSだけでできるの!?」驚きの進化を遂げたモダンCSS
riyaamemiya
1
220
不健康エンジニア「健康」を知る
riyaamemiya
1
1.4k
Other Decks in Technology
See All in Technology
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
160
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
420
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
220
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
550
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
890
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
160
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.1k
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
210
おそらく日本で唯一のDevRelインターン生として
husengs7
0
170
Cognition AI Japan - ウェビナー2_テストQA_運用監視
cogakira
0
110
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
510
購入ドメインでの課題と取り組み
ykagano
0
150
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
910
Building Applications with DynamoDB
mza
96
7.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
610
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Raft: Consensus for Rubyists
vanstee
142
7.7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
The SEO identity crisis: Don't let AI make you average
varn
0
580
HDC tutorial
michielstock
2
950
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
560
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to make the Groovebox
asonas
2
2.5k
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