0

「C Primer Plus 5/e」という本の中で、著者が次のように書いているのを見ました。

C 標準では、float は少なくとも 6 桁の有効数字を表すことができ、少なくとも10^(-37)から まで の範囲を許容する必要があると規定されてい10^(+37)ます。

ただし、そうすると同時に自然なサイズを使用するには、4 バイトが必要です。実際には、10^(-63) から 10^(+63) までの範囲を持つことができます。

http://en.wikipedia.org/wiki/Floating_point#Internal_representation

だから私は頭の中で質問をしました:なぜC標準は範囲の要件を選択するのですかat least 10^(-37) to 10^(+37)? もちろん、計算速度の考慮もあるかもしれません。しかし、この理由以外に、32 ビット空間全体を使用しない理由はありますか?

4

1 に答える 1

5

C 標準は、さまざまなハードウェアを備えたさまざまなマシンに C 言語を実装できるように、そのままの形で記述されています。必要な実際の表現を制限することで、「ルールを破ることなく」C を使用できるマシンが増える可能性があります。

必ずしも IEEE-754 を使用しない浮動小数点プロセッサがあります (特に、ありました)。

さらに、あなたの 10^(-63) .. 10^(+63) は誤解だと思います。32 ビット float の範囲は 2^(+/-127) で、これは約 10^(+/-37) (2^127 ~= 10^37) を意味します。

于 2013-02-11T18:57:29.383 に答える