24

この 2 進数の浮動小数点表現について頭を悩ませようとしていますが、どこを見ても、質問に対する適切な答えが見つかりませんでした。

指数が偏っているのはなぜですか?

古き良き信頼できる 2 の補数法の何が問題なのですか?

このトピックに関するウィキペディアの記事を見てみましたが、「符号付きの値の通常の表現では比較が難しくなる」と書かれています。

4

3 に答える 3

25

IEEE 754 エンコーディングには、2 つの正の非 NaN 数値の間で、対応するビット文字列を辞書式に比較するだけで、または同等に、これらのビット文字列を符号なし整数として解釈し、それらの整数を比較することによって、順序比較を実行できるという便利な特性があります。これは、+0.0 から +Infinity までの浮動小数点範囲全体で機能します (そして、比較を拡張して符号を考慮するのは簡単なことです)。したがって、たとえば IEEE 754 バイナリ 64 形式で1.1は、ビット文字列 (msb が最初) としてエンコードされます。

0011111111110001100110011001100110011001100110011001100110011010

while0.01はビット文字列としてエンコードされます

0011111110000100011110101110000101000111101011100001010001111011

のビット文字列の前に辞書式に発生します1.1

これが機能するためには、指数が小さい数値を比較する前に、指数が大きい数値を比較する必要があります。バイアスされた指数はそれを機能させますが、2 の補数で表現された指数は比較をより複雑にします。これがウィキペディアのコメントが当てはまるものだと思います。

もう 1 つの観察結果は、選択したエンコーディングでは、浮動小数点数+0.0が完全にゼロで構成されるビット文字列としてエンコードされることです。

于 2013-11-08T18:23:01.710 に答える