補数と負数表現を理解する

固定ビット長の符号付き整数では、2の補数を使うと減算を加算回路で扱いやすくなる。ビット反転と+1だけを暗記せず、表現範囲、最上位ビット、オーバフローまで一体として理解する。

この単元で学ぶこと

  • 1の補数の意味と役割を説明できる
  • 2の補数の意味と役割を説明できる
  • 最上位ビットの意味と役割を説明できる
  • 固定ビット長で2の補数の生成・復元・範囲判定を行える

本文解説

nビットの2の補数表現では範囲は-2^(n-1)〜2^(n-1)-1で、最上位ビットの重みを負として読むこともできる。負数は対応する正数のビットを反転して1を加えることで作れる。

1の補数 固定ビット長で全ビットを0↔1に反転した値。 2の補数を作る途中段階として現れる。

2の補数 1の補数に1を加えて得る表現で、符号付き整数の負数表現に広く使われる。 加算器で減算を扱いやすく、0の表現が一つになる。

最上位ビット 2の補数表現では最上位ビットが0なら非負、1なら負の値を表す。 単なる符号だけでなく重み-2^(n-1)として計算できる。

表現範囲 nビットの2の補数では-2^(n-1)〜2^(n-1)-1を表せる。 正側より負側が1つ多い。

符号拡張 より長いビット幅へ変換するとき、負数は最上位の1を左側へ複製する。 値を保ったまま8ビットから16ビットなどへ拡張する。

負数の値を求める問題では、ビット長を先に固定する。負のビット列を絶対値へ戻すなら「反転して+1」、または最上位ビットを負の重みとして加算する。加算結果が表現範囲を超えるかも確認する。

8ビットで-18を表すなら+18=00010010、反転11101101、+1して11101110となる。逆に11101110を反転00010001、+1で00010010=18なので-18と確認できる。

図解

2の補数で負数を作る流れ
正数を固定幅へそろえ、全ビット反転、+1の順で負数表現を得る。

重要ポイント

  • 1の補数: 固定ビット長で全ビットを0↔1に反転した値。
  • 2の補数: 1の補数に1を加えて得る表現で、符号付き整数の負数表現に広く使われる。
  • 最上位ビット: 2の補数表現では最上位ビットが0なら非負、1なら負の値を表す。
  • 表現範囲: nビットの2の補数では-2^(n-1)〜2^(n-1)-1を表せる。
  • 2の補数はビット長を固定して扱う。nビットの範囲は-2^(n-1)〜2^(n-1)-1。

間違えやすい点

  • 反転だけで止めると1の補数であり2の補数ではない。
  • ビット長を変えてから補数を取ると結果が変わるため、指定幅を確認する。
  • 最上位ビット1を単純に「符号だけ」とみなし残りだけを正数として読まない。

用語解説

1の補数
固定ビット長で全ビットを0↔1に反転した値。
2の補数
1の補数に1を加えて得る表現で、符号付き整数の負数表現に広く使われる。
最上位ビット
2の補数表現では最上位ビットが0なら非負、1なら負の値を表す。
表現範囲
nビットの2の補数では-2^(n-1)〜2^(n-1)-1を表せる。
符号拡張
より長いビット幅へ変換するとき、負数は最上位の1を左側へ複製する。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。