質問

合理的なマンティッサ/指数バランスを備えた特定のバイト数の2倍のバイト数の)は、その半分のバイト数の符号なし整数の範囲の範囲を常に完全に正確に保持できますか?

たとえば、8バイトが4バイトの符号なしINTの数の範囲を完全に正確に保持できますか?

これが要約するのは、2バイトのフロートが1バイトの符号なしのintの範囲を保持できる場合です。

もちろん、1バイトの符号なしintは0-> 255になります。

役に立ちましたか?

解決

IEEE754 64ビットダブルは、53-ODDがあるという理由だけで、任意の32ビット整数を表すことができます(a) 精度と32ビット整数のために利用可能なビットは、まあ、32 :-)のみ必要です

A(非IEEE754二重精度)64ビットの浮動小数点数が32ビット未満の精度を持つことはもっともらしいでしょう。それは(指数のために)本当に膨大な数字を可能にしますが、正確な犠牲を払うことができます。

一番下の行は、浮遊点数のマンティッサに整数にあるよりも多くの精度がある場合(そして、それをスケーリングするのにエクスペンテントの十分なビット)、精度を失うことなく表すことができるということです。


(a) 技術的には、53番目の精度は暗示されています 1 シーケンスの開始時に、「変動」の量が52ビットしかない場合があります。 52であろうと53であろうと、32ビット整数ごとに表すのに十分なビットです。

他のヒント

はい。フロート(またはダブル)は、切り捨てられる必要のない整数を正確に表すことが保証されています。ダブルの場合、53ビットの精度があるため、32ビットの整数を正確に表すのに十分すぎるほど、64ビットのものの小さな(統計的に言えば)割合もあります。

正確に範囲は、実装の多くの要因に正確に依存することですが、指数フィールドが0に設定されている場合、整数までの幅まで正確に表すことができると言うことで、それを下に縛ることができます。あなたのマンティッサフィールド(サインビットを仮定)。 IEEE 754のダブルサイジョンの場合、これは52ビット数を正確に表すことができることを意味します。一般に、マンティッサは構造全体の幅の半分を超えます。

ダブルの仕組みの詳細については、このブログ投稿をご覧ください。 浮動小数点数の解剖学.

浮動小数点数について話すとき、私は「完全に正確に」という言葉を使用しません。しかし、はい、a double 32ビット整数を表すことができます。

これも当てはまるフロートとINTの他の組み合わせがわかりません。

実際に言えば、マシンがサポートするものを上回るフローティングポイントを使用することを気にしたくないので、Bignumを使用して合理的な算術に切り替えてください。そうすれば、あなたは精度が保証されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top