IEEE 754到十进制

时间:2014-02-19 02:43:07

标签: ieee-754

我正在尝试将以下IEEE 754十六进制数0x805c00f0转换为十进制等效值,根据在线转换器,该值相当于-8.44920195816662938E-39。逐步在纸上进行,我得到以下结果:

805c00f0 = 1000 0000 0101 1100 0000 0000 1111 0000 最左边1表示数字为负数。接下来的8位000 0000 0表示减去偏差后的指数为-127。我留下的位是101 1100 0000 0000 1111 0000,尾数。

在回忆隐含的1之后,我有-1.101 1100 0000 0000 1111 0000 * 2 ^ -127。将小数点移动到左侧127位,我有-0.00(...)1101 1100 0000 0000 1111 0000.求和,得到-1(2 ^( - 127)+2 ^( - 128)+ 2 ^ (-130)+2 ^( - 131)+2 ^( - 132)+2 ^( - 143)+2 ^( - 144)+2 ^( - 145)+2 ^( - 146))= -1.01020727331947522 E-38。这不等于转换器给我的东西,我无法理解为什么。我错了什么?

1 个答案:

答案 0 :(得分:2)

per wikipedia“存储的指数00和FF被特别解释。”使用的公式是(-1)^(signbits)×2 ^( - 126)×0。(有效点)

805c00f0 =>
8 0 5 c 0 0 f 0 =>
1000 0000 0101 1100 0000 0000 1111 0000 =>
1 00000000 101 1100 0000 0000 1111 0000 =>
-1 x 2^(-126) x 0.10111000000000011110000 =>
-1 x 2^(-126) x (2^-1 + 2^-3 + 2^-4 + 2^-5 + 2^-16 + 2^-17 + 2^-18 + 2^-19) =>
-1 * (2^-127 + 2^-129 + 2^-130 + 2^-131 + 2^-142 + 2^-143 + 2^-144 + 2^-145) =>
-8.449202e-39