設問
IEEE754形式(単精度)における内部表現が16進数表記で(C12C0000)16と(40A40000)16で表される2つの浮動小数点の和の10進数表記として正しいものはどれか。
なお浮動小数点
f = (-1)^s × (1.M) × 2^(E-127)
は、IEEE754形式では下図のように構成されている。
ここで符号部Sは0で正を、1で負を表し、指数部Eは127を加えて表し、仮数部Mは1.Mとなるように正規化されている。
- -5.625
- -5.25
- 5.25
- 5.625
- 15.875
解説
※回答に時間がかかりすぎるので他の簡単な方法があるかもしれない。まず16進を2進に分解する。
① (C12C0000)16 = 1100.0001.0010.1100.0・・・0
② (40A40000)16 = 0100.0000.1010.0100.0・・・0
(後半はすべて0なので省略)
これを題意に沿ってS、E、M 部にビット単位で分ける。
① (C12C0000)16
S = 1
E = 100.0001.0 = 130 (10進数では130)
M = 010.1100.0・・・0
② (40A40000)16
S = 0
E = 100.0000.1 = 129
M = 010.0100.0・・・0
ここで、設問の式にそれぞれを当てはめると、それぞれ次のように書き直せる。
f = (-1)^s × (1.M) × 2^(E-127)
① f = -1 × (1.M) × 2^(3)
② f = +1 × (1.M) × 2^(2)
次に (1.M) × 2^(3) 部について、整数部と少数部に分けてそれぞれ掛け算をする。
少数部は2の乗数分、1ビットシフトする
10進数に直すと次のようになる。
①のカッコ内 8 + 2.750 = 10.750
②のカッコ内 4 + 1.125 = 5.125
式に代入する。
① f = -1 × 10.750
② f = +1 × 5.125
① + ② = -10.75 + 5.125 = -5.625
答え
① -5.625
0 件のコメント:
コメントを投稿