本文へスキップ

平成24年度 春期 ITパスポート試験 問52

この問題の解説と、これまでの解答の記録です。

問52
頻出度★★☆

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

出典 平成24年度 春期 ITパスポート試験 問52
解説

問 52

  • 不正解ア

    −256 〜 255 は全部で 512 個の値を表すことになり、8 ビットで区別できる 256 通りの 2 倍です。2^8 = 256 という「通り数」をそのまま範囲の端の値に当ててしまった誤りで、8 ビットでは表現しきれません。

  • 不正解イ

    −255 〜 256 も合計 512 個で 8 ビットの表現能力(256 通り)を超えています。さらに 2 の補数では正の最大値が 2^(n−1)−1 = 127 であり、256 のような値が正側の上限になることはありません。

  • ウ

    正解 8 桁(8 ビット)の 2 進数が表せるビットパターンは 2^8 = 256 通りです。2 の補数表現では最上位ビットを符号として扱い、最上位が 0 のパターン(00000000 〜 01111111)で 0 〜 127 を、最上位が 1 のパターン(10000000 〜 11111111)で −128 〜 −1 を表します。したがって表現できる数値の範囲は −128 〜 127 となり、選択肢ウが正解です。一般に n ビットの 2 の補数では −2^(n−1) 〜 2^(n−1)−1 であり、n=8 なら −2^7 = −128 から 2^7−1 = 127 です。0 の表現が 1 通りしかないため、負側が正側より 1 個多い非対称な範囲になる点が特徴です。

  • 不正解エ

    −127 〜 128 は個数こそ 256 個で合っていますが、非対称の向きが逆です。2 の補数では 10000000 が −128 を表すので負側が 1 個多くなり、逆に +128 は 8 ビットの 2 の補数では表現できません(+128 を表すには 9 ビット必要)。

ここがポイント
  • n ビットの 2 の補数表現で表せる範囲は −2^(n−1) 〜 2^(n−1)−1。8 ビットなら −128 〜 127、16 ビットなら −32768 〜 32767。
  • 2 の補数では 0 の表現が 1 通りだけなので、表せる負数が正数より 1 個多い非対称な範囲になる(最上位ビットが符号を示す)。
用語

解答の記録