問題 No.1783
IEEE 754規格などで規定される浮動小数点数の表現において、正規化を行う主な目的として適切なものはどれか。
【正解の解説】
表現できる数値の有効桁数を最大限に活用するため
これは例えば、定規のメモリを細かく使うために、数字の頭に無駄な「0」を付けないように桁を揃える工夫のようなものです。浮動小数点数では、仮数部の先頭を常に「1」にする(隠しビットなど)ルールにすることで、同じビット数でもより多くの有効数字を保持できるようになり、計算の精度を限界まで高めることができます。
スポンサーリンク
【その他の選択肢の解説】
限られたビット数の中で表現可能な数値の範囲を拡大するため
初学者が最も勘違いしやすいポイントですが、表現できる「数値の範囲(最大値と最小値の広さ)」を決めるのは指数部のビット数であり、仮数部を調整する正規化の目的ではありません。正規化はあくまで「精度(有効桁数)」を上げるためのものであり、範囲の拡大と混同させるための出題者の典型的な罠です。
演算結果のオーバーフローやアンダーフローの発生を完全に防止するため
「正規化をすればエラーが一切起きなくなる万能な処理なのだ」と誤認させるためのひっかけ選択肢です。オーバーフローやアンダーフローは、扱える数値の範囲(指数部の限界)を超えたときに発生する現象であり、桁の形式を整える正規化プロセスだけでは防ぎきれません。エラー防止策としては別の仕組みが必要です。
仮数部の符号判定を高速化してハードウェアの回路規模を削減するため
「コンピュータの処理を速くするためや回路をシンプルにするための仕組みなのだろう」という、一見もっともらしい推測を逆手に取った誤答です。実際のハードウェア設計において、正規化は符号判定のスピードアップや回路削減を目的として行われているわけではなく、あくまで数学的な精度を落とさないためのフォーマット調整として定義されています。