2進数 「1010」の0.3倍ってどう計算するの?

こんにちは、阿久梨絵です!
1010 × 0.3って、どうなるの?
この問いに、モヤモヤした人へ。
ITの世界では、数字が“正確”であるほど、私たちの感覚から遠ざかることがあります。
今回は、 2進数 「1010」を使って、10進数「0.3倍」・ 2進数 「0.010011倍」がなぜ難しく感じるのかを一緒にほどいていきましょう。

ステップ①:「1010」ってどんな数?

1010 は 4ビットの2進数
・それを「0.010011倍」するということは、小数との掛け算になる。

ステップ②:「0.010011」ってどんな数?

0.010011 は、2進数の小数
小数点以下のビットは、それぞれ以下の重みを持つ

0.010011

2⁻¹ → 0
2⁻² → 1
2⁻³ → 0
2⁻⁴ → 0
2⁻⁵ → 1
2⁻⁶ → 1

・このように、割り切れない小数は2進数では無限に続くことがある。
・今回は「6ビットで切り捨てて近似」して扱う。

ステップ③:2進数だけで掛け算する

各ビットに対して「1010」を右にシフトして加算

1010 × 0.010011

0000001010 ← 1010 × 2⁻⁶(右に5シフト)
+ 0000010100 ← 1010 × 2⁻⁵(右に4シフト)
+ 0000101000 ← 1010 × 2⁻²(右に1シフト)

合計 = 10.11111(2進数)≒ 2.96875(10進数)

・2⁻³, 2⁻⁴, 2⁻¹ のビットは 0 なので無視
加算結果は 10.11111(2進数) → 丸めて11(2進数)

安心ポイント

小数点以下の掛け算も、2進数の加算とシフトだけで処理できる。
「ゼロばかりに見える…」と感じても、それは重みが小さいから。
でも、ちゃんと積み重なって意味のある結果が出ているんです。

まとめ

0.010011倍したいのに、 2進数 だとなんだかモヤモヤする…
それはあなたのせいじゃなくて、2進数の世界が割り切れない小数に不向きだから。
でも、近似して加算するだけで、ちゃんと計算できる
2進数 だけでも、安心して掛け算できるんです。
阿久梨絵でした!

上部へスクロール
Verified by MonsterInsights