4

ウィキペディアによると、binary32形式の有効桁数は6 ~ 9桁で、64 形式の精度は15 ~ 17 です。

これらの有効な 10 進数は仮数を使用して計算されていることがわかりましたが、どうすれば計算できますか? 何か案が ?

32bit形式の仮数=24bit、64bit形式の仮数=53bit

4

1 に答える 1

6

まず、この質問では仮数の合計サイズ 24 と 53 を使用することをお勧めします。先行ビットが表されないという事実は、エンコーディングの側面にすぎません。

あいまいな説明だけに関心がある場合は、10 進数の各桁に正確に log2(10) (約 3.32) ビットの情報が含まれます。1 桁をエンコードする必要がある場合は 4 ビットが必要ですが、ここでは連続する 10 進数のいくつかの桁を効率的にエンコードすることについて話しているため、3.32 という数値で十分です。

53 ビット / log2(10) -> 15.95 (10 進数の 16 桁)

24 ビット / log2(10) -> 7.22 (10 進数で 7 桁)

これを適切に行うには、2 進数と 10 進数で表現できる数値が同じではないという事実を考慮する必要があります。2 進浮動小数点の 10 進精度について尋ねる人々は、2 進形式を往復して同じ値を返すことができる 10 進精度、または 2 進浮動小数点を往復するのに必要な 10 進精度のいずれかを意味すると想定されることがよくあります。これらは最も理にかなった解釈であるため、10 進数から同じ値に変換されます。したがって、範囲は「6 … 9」と「15 … 17」です。6 は、バイナリ 32 を介してラウンドトリップすることが保証されている 10 進数の桁数であり、9 は、10 進数を介してバイナリ 32 数値をラウンドトリップするために保持する必要がある 10 進数の桁数です。

Exploring Binaryというブログの著者は現在、ラウンドトリップに関するシリーズを執筆しています。このシリーズは、log2(10)=3.32 の説明に満足できない場合に次に読むべきものです。

于 2015-05-15T14:36:07.477 に答える