Python 浮点尾数和指数基数2

Python 浮点尾数和指数基数2,python,floating-point,binary,mantissa,Python,Floating Point,Binary,Mantissa,我试图理解在这种情况下如何得到尾数和指数。这是我书中的一个例子 我有这个公式(-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.477

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

我有这个公式
(-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.60210^-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.47774


如果我错了,请纠正我,但尾数是浮点右边的数字。在本例中,0.4777474看起来是正确的

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

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

数学上,指数为-63,因为
x=1.602177*10^-19
位于2-63邻域。然而,存储的值是一个8位无符号有偏指数。从数学指数中减去偏差(-127)得到偏差指数

biased_exponent = expo - bias
64 = -63 - (-127)

“在这种情况下,0.4777474看起来是正确的。”-->。分数部分是a,不是0.4777474,但可能是4007636/(2^23)。偏差总是-127?我不知道。但是,对于x=pi,上面的描述不起作用。@proxima当有偏指数为最小/最大时,有一些特殊的注意事项。查看详细信息。我找不到找到尾数的正确方法。我所做的对pi不起作用。