ソフトウェア開発技術者午前平成18年春問01
次の浮動小数点表示法がある。小数点は仮数の左にあり,指数は 64 の"下駄
(げた)履き表現"であって,値は (-1)^s × 0.f × 2^(e-64) である。二つの
16 進数 45BF0000 と 41300000 を、この浮動小数点表示法で表現された値として
加算した結果はどれか。31 30 24 23 0
┌―┬―――┬――――――――――――┐
│ S│ e │ f │
└―┴―――┴――――――――――――┘
↑ 指数部 仮数部
符号
(正:0,負:1)(正
ア 41EF0000
イ 45C20000
ウ 45EF0000
工 86EF0000
■キーワード■ 浮動小数点
■解答■
ソフトウェア開発技術者午前平成18年春問01イ 45C20000
> 手がつけられなかった問題です。どうか解説お願い致します。
正の数同士を足していること,さらに,指数部あたる部分,45 と 41 とで,
かなりの大きさが違うので,答えは,イもしくはウで,指数の変化が少ない
方の,イであるということがだいたい予想できます。あとで,私のブログとプレミヤ版の宿題メールに解説を載せておきます。
と宣言をしておきましたので,日付が替わる前に解説を書きます。
斎藤解説
45BF0000 = 0 100 0101 1011 1111 0000 0000 0000 0000
s| e | f |
(64)10=(100 0000)2 なので,
浮動小数点形式で表すと
(0.1011 1111 0000 0000 0000 0000) × 2^(100 0101 - 100 0000)
= (0.1011 1111 0000 0000 0000 0000) × 2^(0101) ……(A)同様に
41300000 = 0 100 0001 0011 0000 0000 0000 0000 0000
浮動小数点形式で表すと
(0.0011 0000 0000 0000 0000 0000) × 2^(100 00011 - 100 0000)
= (0.0011 0000 0000 0000 0000 0000) × 2^(0001) ……(B)ここで,(A) + (B) をします。
(0.1011 1111 0000 0000 0000 0000) × 2^(0101)
+ (0.0011 0000 0000 0000 0000 0000) × 2^(0001)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
まず,指数を調整し,足し算をします。
(0.1011 1111 0000 0000 0000 0000) × 2^(0101)
+ (0.0000 0011 0000 0000 0000 0000) × 2^(0101)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
(0.1100 0010 0000 0000 0000 0000) × 2^(0101)
これをビットの形式にすると,
指数部分,0101 + 100 0000 (64=100 0000 を加える)
仮数部分,1100 0010
となるので,
0 100 0101 1100 0010 0000 0000 0000 0000
16進数表記にすると
4 5 C 2 0 0 0 0
よって,解答は,
イ 45C20000