応用情報技術者試験 令和4年春 午前問1 解説付き過去問
問題
浮動小数点数を、仮数部が7ビットである表示形式のコンピュータで計算した場合、情報落ちが発生しないものはどれか。
ここで、仮数部が7ビットの表示形式とは次のフォーマットであり、( )2内は2進数、Yは指数である。
また、{ }内を先に計算するものとする。
(1.X1X2X3X4X5X6X7)2×2Y
(1.X1X2X3X4X5X6X7)2×2Y
正解
解説
この問題は、浮動小数点演算において「情報落ち」が発生しない構成を選ぶものです。仮数部が7ビットという制限の中で、指数の差や演算順序が精度に与える影響を理解することが重要です。
- 情報落ちの仕組み
情報落ちは、絶対値の大きく異なる数値を加減算する際に、小さい数値が切り捨てられて計算結果に反映されなくなる現象です。
これは、浮動小数点数の演算で指数の差が大きいとき、仮数部のビットが下位に移動してあふれてしまうことによって発生します。 - 浮動小数点形式の特徴
本問で与えられた形式は (1.X1X2...X7)2×2Y です。
先頭の「1.」に続く7ビットが仮数部であり、有効桁数は最大で8ビットです。
計算結果の仮数部がこのビット数を超えると、下位のビットが切り捨てられ、精度が失われる可能性があります。 - 情報落ちが発生しない構成の解析
{(1.1)2×2-3+(1.0)2×2-4}+(1.0)2×25 の式を見てみましょう。
まず括弧内の計算を行うと、指数が近いため (1.0)2×2-4 は (0.1)2×2-3 に変換されます。
これにより (1.1)2+(0.1)2=(10.0)2×2-3 となり、(1.0)2×2-2 と等価です。
次に、(1.0)2×2-2 を (1.0)2×25 に加算する際、前者は (0.0000001)2×25 に揃えられます。
この結果、(1.0000001)2×25 となり、ちょうど仮数部7ビットに収まるため、情報落ちは発生しません。 - 他の構成での情報落ちの理由
他の構成では、大きな数値と小さな数値を直接加減算しています。
たとえば、(1.0)2×25+(1.1)2×2-3 の場合、(1.1)2×2-3 は (0.00000011)2×25 に揃えられます。
これは仮数部が9ビットとなり、7ビットからはみ出した下位2ビットが切り捨てられるため、情報落ちが発生します。
以上より、指数差が小さい数値同士を先に加算してから、大きな数値との演算を行う構成を選べば、情報落ちのリスクを抑えることができます。
この条件を満たすのは、1つの構成のみです。