負の数を2進数で表現する「補数表現」。1の補数・2の補数の違いと符号付き整数の表現範囲を学びます。
コンピュータって、負の数はどうやって扱ってるの?
代表的なのが2の補数方式よ。
「ビット全反転 + 1」で負の数を作るの。
例: 8ビットで -5 を表すには、5 (0000 0101) → ビット反転 (1111 1010) → +1 (1111 1011)。
これが -5 の表現ね。
1の補数は単に反転するだけ (-0 と +0 が両方存在する欠点)。
うぅ〜ん、なんで2の補数のほうが主流なんですかぁ?
+0 と -0 の重複がなく、加算回路だけで減算もできるから。
-A の加算 = A の2の補数の加算、と統一できるの。
ハードウェアを単純化できるの。
8ビット符号付き整数の表現範囲は -128 〜 +127。
最上位ビット (MSB) が符号を表し、0なら正・1なら負ね。
補足すると、nビット符号付き整数の範囲は -2^(n-1) 〜 +2^(n-1) - 1。
16ビットなら -32768〜+32767、32ビットなら 約-21億〜+21億。
もしオーバーフローが起きたら、どうなっちゃうの?
正の最大値 +127 に 1 を足すと、ビット演算上は 1000 0000 になり -128 になる。
これがオーバーフロー。
試験ではよく問われるから注意ね。
確認クイズ
8ビット符号付き整数で -5 を2の補数表現したものはどれか。
- 1000 0101
- 1111 1010
- 1111 1011
- 0000 0101
こたえを見る
正解: 3. 1111 1011
5 = 0000 0101 → ビット反転 = 1111 1010 → +1 = 1111 1011。これが -5 の2の補数表現です。