平成19年春期試験問題 午前問3

負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち,4倍するとあふれが生じるものはどれか。

  • 1FFF
  • DFFF
  • E000
  • FFFF
正解 問題へ
分野 :テクノロジ系
中分類:基礎理論
小分類:離散数学
解説
16ビットの数値表現では、216種類の数を表現することができます。符号なし(正の数のみ)では「0~65535」、符号付き(正&負)では「-32768~32767」の範囲の数値表現が可能です(-32768~32767=-216-1~216-1-1)。

選択肢の16進表現を2進数に変換すると次のようになります。
  • 1FFF → 0001 1111 1111 1111
  • DFFF → 1101 1111 1111 1111
  • E000 → 1110 0000 0000 0000
  • FFFF → 1111 1111 1111 1111
符号付き16ビットでは、先頭1ビットが符号ビット、下位15ビットの値が絶対値です。よって、選択肢のうち「ア」は正の数、それ以外は負の数を表しているということになります。

この設問では「負数を2の補数で表現する」とあります。2の補数は、負数に対応する正の数のビット列を反転し、1を加えることで負数を表現する方法です。2の補数で表現されたビット列は、再度ビット反転して1を加えることで、元の値に戻る性質があります。この性質を利用して、それぞれの数の絶対値を求めます。
  • 正の数なのでそのまま → 0001 1111 1111 1111
  • 1101 1111 1111 1111 → 0010 0000 0000 0001
  • 1110 0000 0000 0000 → 0100 0000 0000 0000
  • 1111 1111 1111 1111 → 0000 0000 0000 0001
これらを4倍してみます。4倍なのでビット列全体を左に2ビットシフトすればOKです。
  • 0001 1111 1111 1111 → 0111 1111 1111 1100
  • 0010 0000 0000 0001 → 1000 0000 0000 0100
  • 0010 0000 0000 0000 → 1000 0000 0000 0000
  • 0000 0000 0000 0001 → 0000 0000 0000 0100
  • 絶対値は32764です。符号付き16ビットで表現できる範囲内なので、あふれは生じません。
  • 正しい。絶対値は32772です。元は負数なので-32772となり、符号付き16ビットで表現できる範囲を超えてしまうため、あふれが生じます。
  • 絶対値は32768です。元は負数なので-32768となり、あふれは生じません。符号付き16ビットで表現できる最も小さい値です。
  • 絶対値は4です。あふれは生じません。2の補数表現ですべてのビットが1である数値に対応するのは-1であることを覚えておきましょう。

Pagetop