戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2012年 春期 52


問題文

負の整数を2の補数で表現するとき、8桁の2進数で表現できる数値の範囲を10進数で表したものはどれか。

選択肢

-256~255
-255~256
-128~127(正解)
-127~128

🔒 解説は解答すると表示されます

負の整数を2の補数で表現するとき、8桁の2進数で表現できる数値の範囲を10進数で表したものはどれか【ITパスポート 解説】

正解の理由

8桁の2進数(8ビット)で負の整数を表す方法として「2の補数(two's complement:負数を扱うための表現)」を使うと、表現できる範囲は下限が負の方に1つだけ大きくなります。一般式は「nビットなら から 」です。ここで n=8 とすると範囲は から 、つまり から です。したがって選択肢のうち正しいのは (-128~127)です。
(ポイント)
  • ビット数が1増えると表現できる値の幅は2倍になります。
  • 2の補数では「0」は一意で、負数側に1つ多く値を割り当てられるため、下限が対称でない点に注意します。

解法ステップ

  1. 「ビット数 = 8」なので n = 8 と認識する。ここで「桁」はビット(0か1を示す単位)。
  2. 2の補数の一般式を思い出す:nビットで表せる範囲は
  3. n = 8 を代入する:
  4. なので範囲は 。選択肢の中でこれに当たるのが

選択肢別の誤答解説

  • ア: -256~255
    誤りです。これは「9ビットで2の補数を使った場合」の範囲()に相当します。8ビットではありません。
  • イ: -255~256
    誤りです。負側と正側がずれており、どちらの端も2のべき乗の形になっていません。そもそも2の補数では正側は の形(ここでは127)になります。
  • : -128~127
    正しいです。上で示した一般式 に一致します。
  • エ: -127~128
    誤りです。正符号側が1多く、負側が1少ない対称のずれがあります。2の補数ではゼロを1通りで表すため、負側が1つ多く取られます(そのため下限が-128で上限が127になる)。

よくある誤解

  1. 「負と正で対称になる」と誤解する
    → 直感的には「-128~127 は対称ではない」と感じます。2の補数では「0」が1つしかないため、負側に1つ多く割り当てられ、範囲は非対称になります。
  2. 「8桁=8進数と混同する」
    → 「桁」はここでは二進法の桁数、つまりビット数(bit)です。8桁の2進数 = 8ビットです。8進数(octal)は別の基数です。
  3. 「2の補数と符号+絶対値(符号符号法)を混同する」
    → 符号+絶対値(符号ビット+絶対値)だと、正と負でゼロが二通り(+0 と -0)になりがちです。2の補数はその問題を解決します。

補足コラム

  • なぜ下限が1つ大きいのか(直感的な理由)
    2の補数では最上位ビット(MSB:Most Significant Bit=一番重いビット)が「負の重み」を持ちます。8ビットの場合、MSB は の重みを持ちます。他のビットは正の重み()を持ちます。すべての下位ビットを1にすると正の重みの合計は となり、負側は MSB が1で他が0のとき になります。これが範囲が になる直感的な説明です。
  • 具体例(2の補数の作り方)
    例えば十進で -5 を8ビットで表す場合:
    1. 5 の2進(8ビット) = 00000101
    2. ビット反転(1の補数) = 11111010
    3. 1を足す(2の補数) = 11111011 → これが -5 の表現です。
  • 確認用Python(学習用)
# 8ビットの2の補数表現を確認(-128~127)
def to_signed_8bit(x):
    # x: 整数(-128~127)
    return format(x & 0xff, '08b')

for v in (-128, -1, 0, 1, 127):
    print(v, to_signed_8bit(v))

FAQ

Q1. 8桁って本当に8ビットですか?
A1. はい。ここでの「桁」は2進数の桁数を指します。各桁は0か1のどちらかを取り、1桁=1ビットです。
Q2. 2の補数の利点は何ですか?
A2. 計算機が加減算を同じ回路で扱えるようになり、0は一通りだけになる点で利点があります。これによりハードウェア設計が簡単になり、演算が高速で正確になります。
Q3. ほかの表現方法(符号+絶対値、1の補数)は使われないのですか?
A3. 歴史的には使われましたが、現在のコンピュータでは主に2の補数が使われます。理由は上の利点(演算回路の単純化など)です。

関連キーワード: 2の補数、二進数、符号付き整数、ビット数、MSB、符号表現、負の数表現、ビット演算、整数範囲、表現可能範囲
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について