平成22年度 春期 午前 問2
基礎理論
浮動小数点に関する問題
図に示す 16 ビットの浮動小数点形式において,10 進数 0.25 を正規化した表現はどれか。ここで,正規化は仮数部の最上位けたが 1 になるように指数部と仮数部を調節する操作とする。
〔16 ビットの浮動小数点形式〕
左から s:1 ビット / e:4 ビット / f:11 ビット 小数点の位置 … e と f の境目(図では ▲ で示されている) s : 仮数部の符号(0:正,1:負) e : 指数部(2 を基数とし,負数は 2 の補数で表現) f : 仮数部(符号なし 2 進数)
- アs=0 / e=0001 / f=10000000000
- イs=0 / e=1001 / f=10000000000
- ウs=0 / e=1111 / f=10000000000
- エs=1 / e=0001 / f=10000000000
答えと解説を見る
✓ これが正解ウs=0 / e=1111 / f=10000000000
解説
指数を −1 とし、4 けたの補数で 1111 と書きます。
浮動小数点の形式は回ごとに決められ方が違うので、まず設問が置いた取り決めを 2 つ拾います。1 つ目は小数点の位置で、この形式では指数部と仮数部の境目に置かれています。2 つ目は指数部の表し方で、2 を基数とし、負数は補数で表すと書かれています。四つの候補は仮数部がどれも 10000000000 で共通なので、見るのは符号部と指数部だけです。仮数部を小数点の位置から読むと 2 進数の 0.1、すなわち 0.5 になり、最上位けたが 1 なので正規化も済んでいます。求めたいのは 0.25 ですから、0.5 に 2 の何乗を掛ければよいかを解くと指数は −1 です。4 けたの補数で −1 を作るには、+1 の 0001 をけたごとに反転して 1110 とし、さらに 1 を足して 1111 とします。正解は符号部が 0、指数部が 1111、仮数部が 10000000000 の組で、値に戻すと +0.5 × 2 の −1 乗 = 0.25 となり設問と一致します。
ほかの選択肢はなぜ違うのか
- アs=0 / e=0001 / f=100…:指数部の 0001 は +1 を表します。仮数部の 0.5 を 2 倍することになるので値は 1.0 となり、求めたい数の 4 倍に外れます。負の指数を表すには反転して 1 を足した形にしなければなりません。
- イs=0 / e=1001 / f=100…:4 けたを先頭の符号と残り 3 けたの絶対値に分けて読んだ形で、先頭の 1 を負の印、001 を 1 と見なしています。設問は基数 2 の負数を補数で表すと明示しているため、この読み方は取れません。
- エs=1 / e=0001 / f=100…:符号部が 1 なので負の値を表します。指数部も +1 を表す形になっているため、値に戻すと −1.0 となり、正の小数を求める設問に対して符号と大きさの両方が外れます。
出典:平成22年度 春期 応用情報技術者試験 午前 問2
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)