計算機算術

IEEE 754の非正規化数(サブノーマル数)の役割として正しいものはどれか。

  1. A最も大きい正規化数より大きな値を表し、オーバーフローを防ぐ
  2. B計算の誤りを検出し、結果をNaNに置き換える
  3. C正規化数と0の間を埋め、アンダーフローをなだらかにする
答えと解説を見る

正解:C. 正規化数と0の間を埋め、アンダーフローをなだらかにする

正規化数だけでは、最も小さい正規化数(単精度で約1.18 × 10⁻³⁸)と0の間に大きなすき間ができ、それより小さい結果はいきなり0になってしまいます。非正規化数は、指数部をすべて0にして先頭の1を仮定しないことで、このすき間を等間隔の小さな数で埋めます(漸進アンダーフロー)。これにより x − y = 0 なら x = y という性質が保たれます。大きな値を表すのではなく、そちらは無限大で表します。誤りの検出とも関係ありません。

  • A. 大きすぎる値は無限大で表します。
  • B. 誤りの検出とは関係ありません。
  • C. 正しい。0の近くのすき間を埋め、アンダーフローをなだらかにします。
この分野を解く 分野ページへ

計算機算術のほかの問題

  1. 非正規化数を多く含む計算で、一部のプロセッサでは処理が大きく遅くなることがある。そのため性能を優先する場面で使われる設定はどれか。
  2. IEEE 754の浮動小数点数の演算で、正の数を0で割ったときの結果として規格で定められているものはどれか。
  3. x がNaNのとき、多くのプログラミング言語で x == x を評価した結果はどれか。
  4. IEEE 754の単精度で、指数部がすべて1(255)のビット列が表すものの説明として正しいものはどれか。
  5. IEEE 754の浮動小数点数で、+0と−0についての説明として正しいものはどれか。