0

在这种情况下,我试图了解如何获得尾数和指数。这是我书中的一个例子。

我有这个公式(-1)^s * (1 + M) * b^E-e = x

s = 0 or 1 (the sign)
M = mantissa
b = base (In this case 2)
E = the exponent of this mantissa
e = 127 (for a 32bits system)

仍然按书本,对于x = 1.602177 * 10^-19,我得到

S = 0,

M = 0.4777474,

E = 64

它的工作原理。

1 * 1.4777474 * 2^-63 = 1.602 10^-19*

但是,我不知道如何获取ME的值。

我读到E = log b |x| 那么M = |x|b^-E

在这种情况下E = log2(1.602177*10^-19) = -62.43660 (我正在使用日志基数 2 的网站,所以我不确定结果所以我尝试了 E = -62 和 -63) .

M = (1.602177 * 10^-19) * 2^-(-62) = 0.7388737

M = (1.602177 * 10^-19) * 2^-(-63) = 1.4777474

如果我错了,请纠正我,但尾数是浮点右侧的数字。在这种情况下,0.4777474 看起来是正确的。

此时我有E = -63 和M = 0.4777474,但E应该是 64

4

1 回答 1

0

我有 E = -63 和 M = 0.4777474,但 E 应该是 64

在数学上,指数是 -63,就像x = 1.602177 * 10^-19在 2 -63邻域中一样。然而,存储的值是一个带有binary32的 8 位无符号偏置指数。从数学指数中减去偏差 (-127) 以获得偏差指数。

biased_exponent = expo - bias
64 = -63 - (-127)
于 2020-09-01T16:58:57.587 回答