浮動小数点と誤差 想定問題 1
計算機では,実数を32個の0と1の並びで表すことがある。先頭の1個を符号部,次の8個を指数部,残りの23個を仮数部とするこの方式(単精度浮動小数点表現)を,次の手順で作る。実数-22.5をこの方式で表したものとして,最も適切なものはどれか。
手順1:表したい実数を ±(1+x)×2α(0≦x<1,αは整数)の形に直す。
手順2:符号部には,正の数なら0,負の数なら1を入れる。
手順3:指数部には,αに127を加えた値を8桁の2進数で書いたものを入れる。
手順4:仮数部には,xを2進数の小数で書き,小数点の後ろの数字を先頭から23個並べたものを入れる。
例として3.0を表すと,3.0=(1+0.5)×21 なので α=1,x=0.5 である。符号部は0,指数部は128を2進数にした10000000,仮数部は x=(0.1)2 から,1 のあとに0を22個並べた列になる。
符号部指数部仮数部
解説
ポイント
負の実数 −22.5 を,決められた手順で符号部・指数部・仮数部の列に直す問題です。
考え方と解き方
- 5 を 2 で割れるだけ割り,1以上2未満の数 × 2α の形にします。符号は負なので 1,指数部は α+127,仮数部は x を2進数の小数にしたものです。
22.5 ÷ 24 = 22.5 ÷ 16 = 1.40625。−22.5 = −24×(1+0.40625) より,α=4,x=0.40625
- 符号部:負なので 1
- 指数部:4+127=131=128+2+1 なので 10000011
- 仮数部:0.40625=1/4+1/8+1/32=(0.01101)2。小数点以下を並べて 01101 のあとに 0 が18個
- 確かめ:−16×1.40625=−22.5。答えは ③
ほかの選択肢
②:指数部が α=4 をそのまま2進数にした 00000100 で,127 を足していません。
④:仮数部に「1.」の 1 まで入れて 101101… としています。仮数部は小数点より後ろだけです。
⑤:指数部が 10000100(α=5)の形です。25×(1+x)=22.5 だと 1+x=0.703125 となり,1以上2未満になりません。
覚えておくこと
- 単精度は 符号部1ビット(正が0,負が1),指数部8ビット(α+127 を2進数にしたもの),仮数部23ビット(x を2進数の小数にしたもの)(テキスト・覚えること)
- 指数部に α そのもの(3 なら 00000011)を入れたり,127 を足し忘れたりしない(テキスト・ひっかけ)
- 仮数部には「1.」の 1 は入れず,小数点より後ろだけを並べる(テキスト・ひっかけ)
類似する過去問:令和元年度(再試験) 基礎科目 I-2-4、平成29年度 基礎科目 I-2-2
テキスト「浮動小数点と誤差」を読む