浮動小数点数を,仮数部が7ビットである表示形式のコンピュータで計算した場合,情報落ちが発生しないものはどれか。
ここで,仮数部が7ビットの表示形式とは次のフォーマットであり,( )_2内は2進数,Yは指数である。
また,{ }内を先に計算するものとする。
(1.X_1X_2X_3X_4X_5X_6X_7)_2×2^Y
正答1
解説
正解は1です。
浮動小数点数の加減算では、指数をそろえてから仮数部どうしを計算します。
絶対値が大きく異なる数を足すと、小さい数の下位の桁が仮数部に収まらずに失われます。
これを情報落ちといいます。
仮数部が7ビットなので、2^5の数と足し合わせたときに残せる最小の桁は2^(5−7)=2^−2です。
【計算】
(1.1)_2×2^−3は2^−3+2^−4です。
(1.0)_2×2^−4は2^−4です。
選択肢1の{ }内は2^−3+2^−4+2^−4=2^−3+2^−3=2^−2となります。
これに2^5を足すと2^5+2^−2=(1.0000001)_2×2^5です。
小数点以下7ビット目までで表せるので、仮数部にちょうど収まります。
【選択肢別解説】
1:○ 先に小さい数どうしを足して2^−2という1桁の値にまとめています。
2^5に足しても2^−2の桁は仮数部の最下位ビットに収まるので、情報落ちは起きません。
2:× { }内は2^−3+2^−4−2^−4=2^−3です。
2^5+2^−3を表すには仮数部に8ビット目が必要なので、2^−3の桁が失われて情報落ちが発生します。
3:× 先に2^5と2^−3+2^−4を足すため、2^−3と2^−4の桁が仮数部に入りきらず情報落ちが発生します。
そのあと2^−4を足しても、同じ理由でその桁は失われます。
4:× { }内の2^5−2^−4は(11111.1111)_2=(1.11111111)_2×2^4です。
仮数部に8ビットが必要になるので最下位の桁が失われ、情報落ちが発生します。
【ポイント】
情報落ちは、絶対値の大きな数と小さな数の加減算で、小さい数の下位の桁が失われる誤差です。
防ぐには、絶対値の小さい数どうしを先に計算してから大きな数に加えるのが基本です。
値の近い数どうしの減算で有効桁数が減る「桁落ち」と区別して覚えましょう。