浮動小数点と誤差 想定問題 2
32個の0と1を,先頭から符号部1個・指数部8個・仮数部23個に分け,次の手順で実数を表す方式(単精度浮動小数点表現)がある。この方式で,符号部が1,指数部が01111110,仮数部が 11 のあとに0が21個続く列であるとき,表している実数として,最も適切なものはどれか。
手順1:表したい実数を ±(1+x)×2α(0≦x<1,αは整数)の形に直す。
手順2:符号部には,正の数なら0,負の数なら1を入れる。
手順3:指数部には,αに127を加えた値を8桁の2進数で書いたものを入れる。
手順4:仮数部には,xを2進数の小数で書き,小数点の後ろの数字を先頭から23個並べたものを入れる。
解説
ポイント
0 と 1 の列から,元の実数を求める問題です。
考え方と解き方
ふつうとは逆向きです。α=(指数部の値)− 127 で,符号を除いた大きさは 2α×(1+x) です。指数部が127より小さいので,α はマイナスになります。
- 符号部:1 なので負の数
- 指数部:(01111110)2=126。α=126−127=−1
- 仮数部:先頭が 11 なので x=(0.11)2=1/2+1/4=0.75
- 大きさ:2−1×(1+0.75)=0.5×1.75=0.875。負なので −0.875。答えは ①
ほかの選択肢
②(−0.75):x を (0.1)2=0.5 とみて 0.5×1.5=0.75 としています。仮数部は 11 なので x=0.75 です。
④(−1.75):指数部が 01111111(α=0)のときの値です。
覚えておくこと
- 127 を足すのは,マイナスの指数も正の数で表すための決まり。指数部が 01111111(127)なら α=0,それより小さければ α はマイナス(テキスト・覚えること)
- 列から実数を求める時は,指数部の値 − 127 で α を出し,仮数部から x を出して ±2α×(1+x) を計算する(テキスト・解き方)
- 符号部が 1 なら負の数。値を求めたあとに負の符号をつけ忘れない(テキスト・ひっかけ)
類似する過去問:令和元年度(再試験) 基礎科目 I-2-4
テキスト「浮動小数点と誤差」を読む