解答:イ
解答群の16進数を10進数に変換し、その数値を4倍して16ビットの表現範囲を越えるものを探せばよい。
16ビットの2進数の表現範囲は、−216−1から216-1−1である。したがって、32767から−32768が表現できる範囲である。
ア 1FFF
2進数に変換する
(1FFF)16=(0000 1111 1111 1111)2
最上位のビットが0であるから正の数値である。したがって、このまま10進数に変換する。
(1FFF)16=(8191)10
8191×4=32764
2進数16ビットの表現可能範囲である。
イ DFFF
2進数に変換する
(DFFF)16=(1101 1111 1111 1111)2
最上位のビットが1であるから負の数値である。したがって、この2進数の2の補数を求める。2の補数は、2進数の全ビットの1と0を反転させた1の補数に1を加えたものである。
1101 1111 1111 1111
0010 0000 0000 0000(1の補数)
0010 0000 0000 0001(2の補数)
10進数に変換すると8193であるから、この(DFFF)16は−8193である。
−8193×4=−32772
2進数16ビットの表現可能範囲を超えるのであふれが生じる。
ウ (E000)16
2進数に変換する。
(E000)16=(1110 0000 0000 0000)2
最上位のビットが1であるから負の数値である。したがって、この2進数の2の補数を求める。2の補数は、2進数の全ビットの1と0を反転させた1の補数に1を加えたものである。
1110 0000 0000 0000
0001 1111 1111 1111(1の補数)
0010 0000 0000 0000(2の補数)
10進数に変換すると8192であるから、この(E000)16は−8192である。
−8192×4=−32768
2進数16ビットの表現可能範囲である。
エ (FFFF)16
2進数に変換する。
(FFFF)16=(1111 1111 1111 1111)2
最上位のビットが1であるから負の数値である。したがって、この2進数の2の補数を求める。2の補数は、2進数の全ビットの1と0を反転させた1の補数に1を加えたものである。
1111 1111 1111 1111
0000 0000 0000 0000(1の補数)
0000 0000 0000 0001(2の補数)
10進数に変換すると1であるから、この(FFFF)16は−1である。
−1×4=−4
2進数16ビットの表現可能範囲である。