
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
符号部1文字、指数部8文字、仮数部23文字の単精度浮動小数点表現で、実数13.0を表現する問題。±2^a×(1+x)の形に変形し、指数部はa+127の2進数、仮数部はxの2進小数とする。
問題文の手続きに従って、実数13.0を符号部・指数部・仮数部からなる単精度浮動小数点表現に変換する問題。
① 符号部: 正なら0。指数部: α+127の2進数。仮数部: 1.xxxのxxx部分
② 13=8×1.625=2³×(1+0.625) → 符号部0(①②は除外)、指数部3+127=130=10000010(③⑤の10000001は129で除外)。仮数部0.625=0.101₂→101000…
③ ④
13.0=2³×(1+0.625)と変形できる(8×1.625=13)。したがってa=3、x=0.625。符号は正なので符号部は0。指数部はa+127=130で、130=(10000010)₂。仮数部はx=0.625=1/2+1/2³=(0.101)₂より、10100000000000000000000(23文字)となる。したがって符号部0、指数部10000010、仮数部10100000000000000000000の④が正しい。
■ αの見つけ方
13を「2のα乗×(1以上2未満の数)」の形にするには、13以下で最大の2の累乗(1, 2, 4, 8, 16, …のうち8=2³)で割ります。13÷8=1.625なので、13=2³×1.625、つまりα=3、x=0.625です。
■ 2進数への直し方
・整数: 130=128+2なので、8桁の2進数では10000010です(左から128, 64, 32, 16, 8, 4, 2, 1の位)。
・小数: 0.625=0.5+0.125=1/2+1/8なので、小数点以下の位(1/2, 1/4, 1/8, …)に1, 0, 1が並び、(0.101)₂になります。
13.0=1101₂=1.101₂×2³と2進数で考えると、指数(3)と仮数部(101)が素早く求められる。指数部はバイアス127を加えた値(3+127=130)の2進数で表す。
キーワード: 浮動小数点、単精度、指数部、仮数部、2進数、情報・論理
同じ問題が計2回出題されています(平成29年度、令和元年度(再試験))。