浮点数二进制表示中的小数部分

Fraction part in binary representation of floating point numbers

当我尝试将 -0.75(-1.1 * 2^-1 二进制)转换为其二进制形式时,我得到

1 01111110 00000000000000000000001

但二进制数-0.75实际上是

1 01111110 10000000000000000000000

为什么“1”在分数区域的最左边而不是最右边?

根据this standard十进制分数,对应其24位二进制表示,是负数的和2 的幂,并且在位置 24 处还有一个 隐式位 ,它始终为“1”。这个隐式位总是将总和加一(不包括一些特殊情况——例如,零)。

示例:

000000000000000000000000 = 1 * 2^0 = 1
100000000000000000000000 = 1 * 2^0 + 1 * 2^(-1) = 1.5
110000000000000000000000 = 1 * 2^0 + 1 * 2^(-1) + 1 * 2^(-2) = 1.75

大家可以在线玩amazingconverter来更好的理解这个标准