0

私が知る限り、1 つの方法は、指数が大きすぎて表現できない可能性があるということです。符号ビットと仮数/小数部でもオーバーフローが発生する可能性もありますか?

4

1 に答える 1

3

「オーバーフロー」という用語は、IEEE 754-2008 7.4 に従って、過剰な大きさの結果のみを指します。ポイントの結果 (4 を参照) は指数範囲が無制限でした。」</p>

あなたの質問は、他の例外に関心を示しているようです。つまり、浮動小数点演算の限界に達し、数学的に理想的な結果が得られないその他の状況です。IEEE 754 では、無効な演算、ゼロ除算、オーバーフロー、アンダーフロー、不正確さの例外が規定されています。

以下に対して無効な操作が発生します。

  • シグナリング NaN に対する任意の一般計算またはシグナリング計算操作。(これは、「これは NaN ですか?」と尋ねるような操作を除外します。この操作では、シグナリング NaN が例外オペランドではなく、通常のオペランドになる可能性があります。)
  • 無限大にゼロを掛ける (直接または融合乗加算)。
  • 反対の符号を持つ無限大を加算するか、同じ符号を持つ無限大を減算します。
  • ゼロをゼロで割るか、無限大を無限大で割る。
  • 除数がゼロまたは分子が無限大の場合の剰余。
  • ゼロ未満の値の平方根。
  • 結果が宛先フォーマットに適合しない場合、または一方のオペランドが有限で他方が無限である場合の「量子化」操作。
  • 結果が大きすぎるか、NaN または無限大である場合の浮動小数点数の整数への変換。
  • NaN が指定された場合に通知するように特別に指定された操作を使用した NaN との比較。
  • オペランドが NaN、無限大、またはゼロの場合の一部の整数対数関数。

ゼロによる除算は、次の場合に発生します。

  • 有限のオペランドに対して正確な無限の結果が発生します (たとえば、3/0 ですが、無限/1 ではありません)。

アンダーフローは次の場合に発生します。

  • 小さな結果 (非正規間隔) が検出されます。これは実装に依存します。アンダーフロー基準に使用される結果は、正確な数学的結果である場合もあれば、仮数が丸められている場合もあります。

(アンダーフロー例外はゼロ以外の小さな結果が検出されたときに技術的に発生しますが、デフォルトの例外処理が有効になっており、最終的な丸められた結果が正確である場合は無視され、目に見える影響はありません。)

不正確は次の場合に発生します。

  • 演算の丸め結果は、正確な数学的結果とは異なります。

例外が発生する可能性がありますが、プログラミングしている言語では例外が無視され、トラップ (プログラム制御の例外的な変更) が生成されない場合があることに注意してください。トラップを有効にしたり、例外が発生したかどうかを示すステータスフラグを調べたりするための規定が、言語またはその実装にある場合とない場合があります。

于 2013-09-30T14:03:43.657 に答える