10

友人と私は、今日の昼食時に Inf と NaN がどのように保存されるかについて議論していました。

Fortran 90 を例にとってみましょう。4 バイト実数は、Inf または NaN の値を取得できます。これは内部でどのように保存されますか? おそらく、4 バイトの実数は、32 桁の 2 進数で内部的に表される数値です。Inf と NaN は 33 ビットの 2 進数として格納されますか?

4

2 に答える 2

20

具体的にはペストのリンクから:

IEEE 単精度浮動小数点標準表現には、左から右に 0 から 31 までの番号が付けられた 32 ビット ワードが必要です。最初のビットは符号ビット 、S次の 8 ビットは指数ビット ' E'、最後の 23 ビットは分数 ' F' です。

しぇええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ  
0 1 8 9 31  

V単語によって表される値は、次のように決定できます。

  • E=255andFがゼロ以外の場合、 V=NaN("非数")
  • E=255FがゼロでSがの場合1V=-Infinity
  • E=255FがゼロでSがの場合0V=Infinity
  • If 0<E<255then V=(-1)**S * 2 ** (E-127) * (1.F)where " 1.F" は、F の前に暗黙の 1 と 2 進小数点を付けることによって作成される 2 進数を表すことを意図しています。
  • E=0Fがゼロ以外の場合、V=(-1)**S * 2 ** (-126) * (0.F)これらは「正規化されていない」値です。
  • E=0FがゼロでSがの場合1V=-0
  • E=0FがゼロでSがの場合0V=0
于 2009-03-12T19:39:00.510 に答える
9

ほとんどの浮動小数点表現は、Inf および NaN に対して定義されたパターンを設定した IEEE 標準に基づいています。

于 2009-03-12T19:20:53.300 に答える