HOME»ソフトウェア開発技術者平成20年春期»午前問2
ソフトウェア開発技術者平成20年春期 午前問2
問2
次の浮動小数点表示法がある。小数点は仮数部の左にあり,指数は64の"下駄(げた)履き表現"であって,値は(-1)S×0.f×2e-64である。二つの16進数45BF0000と41300000を,この浮動小数点表示法で表現された値として加算した結果はどれか。
- 41EF0000
- 45C20000
- 45EF0000
- 86EF0000
- [出題歴]
- ソフトウェア開発技術者 H18春期 問1
分類
テクノロジ系 » 基礎理論 » 離散数学
正解
イ
解説
演算対象の2つの16進数を符号・指数部・仮数部に分け、浮動小数点表示にすると次のようになります。
[45BF0000]
0 1000101 1011 1111 0000 0000 0000 0000
符号:0,指数:(69-64=)5,仮数:0.10111111
[41300000]
0 1000001 0011 0000 0000 0000 0000 0000
符号:0,指数:(65-64)=1,仮数:0.0011
指数は、"指数は64の"下駄(げた)履き表現"(バイアス64)で実際の値に固定値64を加算した値になっています。このようになっている理由は、符号ビットで正負を表しているのに指数部でも負数表現を可能にすると、単純な大小比較が困難になってしまうためです。
符号ビットは両方とも0のためそのままでいいので、それぞれの仮数部を指数部の値分の累乗して固定小数点表示に戻します。
0.10111111×25=10111.111
0.0011×21=0.011
次にこの2つの値を加算します。
10111.111+0.011=11000.010
この問題で指定されている浮動小数点表示では、小数点は仮数部の左に位置することになっているので、
11000.010→0.1100001×25
というように仮数部を正規化します。累乗は25なので指数部は5になります。
後はこれを指数部の下駄履きに注意して32ビットの浮動小数点表示にすると、
0 100 0101 1100 0010 0000 0000 0000 0000
となり、4ビットずつまとめて16進表記にすると「45C20000」です。
[45BF0000]
0 1000101 1011 1111 0000 0000 0000 0000
符号:0,指数:(69-64=)5,仮数:0.10111111
[41300000]
0 1000001 0011 0000 0000 0000 0000 0000
符号:0,指数:(65-64)=1,仮数:0.0011
指数は、"指数は64の"下駄(げた)履き表現"(バイアス64)で実際の値に固定値64を加算した値になっています。このようになっている理由は、符号ビットで正負を表しているのに指数部でも負数表現を可能にすると、単純な大小比較が困難になってしまうためです。
符号ビットは両方とも0のためそのままでいいので、それぞれの仮数部を指数部の値分の累乗して固定小数点表示に戻します。
0.10111111×25=10111.111
0.0011×21=0.011
次にこの2つの値を加算します。
10111.111+0.011=11000.010
この問題で指定されている浮動小数点表示では、小数点は仮数部の左に位置することになっているので、
11000.010→0.1100001×25
というように仮数部を正規化します。累乗は25なので指数部は5になります。
後はこれを指数部の下駄履きに注意して32ビットの浮動小数点表示にすると、
0 100 0101 1100 0010 0000 0000 0000 0000
となり、4ビットずつまとめて16進表記にすると「45C20000」です。