
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
単精度浮動小数点表現(符号部1ビット、指数部8ビット、仮数部23ビット)で実数13.0を表現する問題。符号・指数(α+127)・仮数(小数部を2進数化)を順に求める。
問題文の手続き(1)〜(4)に従って、実数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+x)(0≦x<1)の形に変形する。13=8×1.625=2^3×(1+0.625)であるからα=3、x=0.625。符号は正なので符号部は0。指数部はα+127=130であり、130=128+2の2進数は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)₂になります。
浮動小数点表現では、実数を2^α×(1+x)の形に正規化し、指数部はα+127(バイアス付き)の2進数、仮数部はxの2進小数展開の並びとなる。13.0=1101₂=1.101₂×2^3と2進数で考えると、指数と仮数を素早く求められる。
キーワード: 浮動小数点、単精度、2進数、指数部、仮数部、情報・論理
同じ問題が計2回出題されています(平成29年度、令和元年度(再試験))。