2016年10月23日日曜日

技術士 情報工学 専門 平成23年 Ⅳ-8

設問


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となるように正規化されている。



  1.   -5.625
  2.   -5.25
  3.    5.25
  4.    5.625
  5.   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 件のコメント:

コメントを投稿