【にのほすう】

2の補数 とは?

💡 ビットを反転して1を足す、コンピュータのマイナスの作り方
📌 このページのポイント
2の補数:コンピュータの負の数の表し方 例:8ビットで -3 を作る 1. +3 0 0 0 0 0 0 1 1 ビット反転 ↓ 2. 反転 1 1 1 1 1 1 0 0 +1 ↓ 3. -3 1 1 1 1 1 1 0 1 = -3 符号ビット 1=負 0=正 メリット 足し算回路だけで引き算もできる 8ビットの表現範囲 -128 〜 +127(256通り)
2の補数のイメージ
ひよこ ひよこ

コンピュータって0と1しかないのに、マイナスの数はどうやって表すの?

ペンギン先生 ペンギン先生

2の補数という仕組みを使うんだ。例えば8ビットで-3を表すには、まず3(00000011)のビットを全部反転して(11111100)、それに1を足す(11111101)。これが-3の表現だよ。

ひよこ ひよこ

なんでそんなややこしい方法を使うの?

ペンギン先生 ペンギン先生

実はこれが一番効率的なんだ。2の補数を使うと、足し算と引き算を同じ回路でできるようになる。5 + (-3)を普通にビットの足し算するだけで正しく2になるんだよ。引き算専用の回路が要らないからCPUがシンプルになるんだ。

ひよこ ひよこ

最上位ビットで正負がわかるんだね!

ペンギン先生 ペンギン先生

その通り!最上位ビットが0なら正の数、1なら負の数。8ビットなら-128から127までの数を表現できるよ。

ひよこ ひよこ

他に負の数の表し方ってあるの?

ペンギン先生 ペンギン先生

1の補数(ビット反転のみ)や符号・絶対値表現(先頭ビットを符号にする)もあるけど、どちらも0が2つ存在するという問題がある。2の補数は0が1つだけで、加減算が統一的に扱えるから、現代のCPUはほぼ全て2の補数を採用しているんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「2の補数」って出てきたら「コンピュータがマイナスの数を表す仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Two's Complement」 = 2の補数
💬 2のn乗から元の数を引いた値が補数になるから「2の補数」と呼ばれるんだよ
← 用語集にもどる