補数と負数表現を理解する
固定ビット長の符号付き整数では、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と確認できる。
図解
重要ポイント
- 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を左側へ複製する。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。