2016-09-03 4 views
1

にされている、私はそれを締結する修正アム:52以上の指数を持つすべての整数であっても64ビット浮動小数点

  • 64ビット浮動小数点で52以上の指数を持つすべての整数は偶数になりますか?たとえば、指数が53であり、仮数が0000000000000000000000000000000000000000000000000001である場合、数字は100000000000000000000000000000000000000000000000000010 - 末尾が10です。仮数が54の場合、数字は100で終わります。

  • より多くの我々は、より多くの整数を表現できない指数を高める - 54の指数のために - 55の指数で、9007199254740993 - - それは1つの数を表すことは不可能だ我々は(理由3番号を表すことができません我々は01,10,11の組み合わせを持つことができる仮数から2ビットを残している)。

答えて

2

64ビット浮動小数点で52以上の指数を持つすべての整数は さえでしょうか?

はい。 F64は52個の符号化された仮数ビットと暗黙の仮数ビットを有する。私たちは '不偏'指数を話しているので、あなたの値は2^exp*1.mantです。

F64を整数に変換すると仮定すると、仮数は不偏指数によって左シフトされます。 52をシフトすると、丸めを必要としない整数が保証されます。あなたが示したようにゼロがシフトされるので、53は偶数を保証します。

は、より多くの我々は、指数を高め、より多くの整数は はい

を表現することはできませんが、これはあなたが記述よりもはるかに速くなります。あなたの値の例は、この最初のオカレンスです。指定したように偶数だけを表すことができる範囲(2^53,2^54)では、すべての整数の半分だけがF64に存在するので、その範囲では2^52の奇数の整数はすべて表示されません。

+0

ありがとう、何を意味するのですか?私たちは '不偏'指数を指しているので、値は2^exp * 1.mant._ですか? –

+0

私は、あなたが値を表すのに使う2の実際の威力を意味します。潜在的な混乱は、例えば、 F64は指数部に加えられる1023のバイアスを持つ11ビットの指数フィールドを使用します。 1.0(指数0:2^0 * 1.0)を表現するためには、1023 == 0x3FFになります。これはしばしば '指数'と呼ばれます。それは役に立ちますか? – Casperrw

+0

ええ、ありがとう、私は今それを得た –

関連する問題