2

私はそのサイトを使用しました: http://sandbox.mc.edu/~bennet/cs110/flt/dtof.html彼らは、指数がで、仮数がであることに基づいている2.625と言います。したがって、その数はであり、これは明らかに ではありません。0_100_010145/16(5/16) * 2^42.625

では、どうあるべきか。

4

4 に答える 4

5

データを間違った方法で解釈しています。

0は符号であるため、数値は正です。100は、実際には1(2 ^ 1)である指数です。指数は符号付きであり、可能な値は次のとおりです。

000(数値0、および非正規化数値)
001 -2
010 -1
011 0100
1
101 2
110 3
111(無限大とNAN)

PS NAN:数字ではありません(エラーコードなど)

0101はあなたの仮数です。

これが実際に意味するのは、数値が1.0101であることです(すべての数値は「1」で始まる必要があるため、精度を高めるための隠しビットがあります。「1」は実際には格納されません)。

これにより、(1 + 5/16)* 2=2.625が得られます

于 2013-03-10T11:48:40.200 に答える
3

最も重要な「1」はエンコードされません。したがって、変換時にそれを追加する必要があります。

この場合、数字は「0101」であるため、「1」を追加すると「1.0101」になります。その場合、指数は4ですが、3でオフセットする必要があるため、実際の乗数は2^1です。

これにより、「10.101」の結果が得られます。これは実際には2.625です。

于 2013-03-10T11:46:20.787 に答える
1

[JasonDの回答を拡大]

浮動小数点数が負の指数を持つ可能性があることを理解している、または当然のことと見なすのは安全だと思います。

しかし、よく考えてみると、それは実際にどのように起こるのでしょうか? それが「偏見」の出番であり、それがあなたの理解におけるミッシングリンクだと思います. あなたのリンクでは、バイアスを計算するための次の法則について言及しています。

2^(k-1) - 1

ここで、k は指数フィールドのビット数です。あなたの例では、k は 3 ビットだったので、バイアスは 3 です。このようにして、範囲 [-3,4] (包括的) 内の任意の指数をエンコードできます。

したがって、数値をデコードするときは、最初に指数を「バイアス解除」する必要があることは明らかです。したがって、JasonD が述べたように、2^4 は実際には 2^1 です。

于 2013-03-10T12:14:06.437 に答える
1

浮動小数点数は 45 (基数 16)、つまり 01000101 (基数 2) です。

0101 は仮数部分で、100 は指数部分です...

先頭のものを復元すると、仮数は 1.0101 に更新されます...

指数からバイアスを差し引くと、8 ビット表現の場合は 3 であり、指数は 1 になります。

バイナリ表現は 1.0101 * 2^1 です...

非正規化すると、2.625 のバイナリ表現である 10.101 が得られます...

于 2013-03-10T12:16:25.127 に答える