離散数学 (全101問中61問目)

No.61

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

分類

テクノロジ系 » 基礎理論 » 離散数学

正解

解説

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ビットでは、先頭ビットが符号ビット、下位15ビットの値が絶対値を表します。先頭ビットが0の場合は0〜32767、1の場合は -32768〜-1を表現します。4つの中では「ア」が正の数、「イ」「ウ」「エ」が負の数を表しているということになります。

「イ」「ウ」「エ」は、2の補数で表現されています。2の補数で表現されたビット列は、もう一度ビット反転させて1を加える処理を行うと、元の値に戻る性質があります。これを使って、それぞれの負数の絶対値を求めます。

 正の数なのでそのまま → 0001 1111 1111 1111
 1101 1111 1111 1111 → 0010 0000 0000 0001
 1110 0000 0000 0000 → 0010 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であることを覚えておきましょう。
© 2010-2021 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop