なぜ引き算が足し算でできるのか?
コンピュータは引き算の回路を持たない——
2の補数という巧妙なトリックで、加算器だけで引き算を実現する。
まず「引き算は大変」という問題を理解しよう
引き算には「借り(borrow)」の伝搬が必要で、回路が複雑になる。 加算器とは別に減算器を作ると回路面積が2倍になる。
「−3を足す」ことは「3の2の補数を足す」と等価。 減算を加算に変換することで、1種類の回路(加算器)だけで済む!
3つのアプローチとそれぞれの問題点
最上位ビット(MSB)を符号ビットとして、残りで絶対値を表す。
負の数は全ビットを反転(NOT)して表す。
全ビット反転 +1 で負の数を表す。
| 2進数 | 10進数(符号なし) | 10進数(2の補数) |
|---|
MSB=1 の場合は負の数(赤くハイライト)
アニメーションで手順を1ステップずつ確認
ビットを直接クリックして操作しよう
4ビット2の補数の全16通りを数直線上で確認