補数表現と符号付き整数

2の補数による負数表現と符号付き整数の範囲を学びます。

負の数を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の補数表現したものはどれか。

  1. 1000 0101
  2. 1111 1010
  3. 1111 1011
  4. 0000 0101
こたえを見る

正解: 3. 1111 1011

5 = 0000 0101 → ビット反転 = 1111 1010 → +1 = 1111 1011。これが -5 の2の補数表現です。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。