1

(-128.4875) base 10 到单精度 IEEE 754

将 (128.4875) base 10 转换为 BINARY 是: 1000 0000 。0111 1100 1100 1100 1100...

二进制的科学记数法是: 1 。0000 0000 1111 1001 1001 1001... x 2^7

SIGN BIT 为:1(1 位)

尾数为0000 0000 1111 1001 1001 100(23 位)

指数为 7 + 127 = (134) 基数 10 = 1000 0110(8 位)

对照在线转换器检查我的答案:

http://s17.postimg.org/3pkw9glm7/mantissa.png

(not enough reputation to post in-line images)

除了尾数的最后一位,我得到了一切。我所做的是我在科学记数法中删除了点后的前 23 位数字。

我得到一个 0,而转换器得到一个 1。为什么会这样?

4

1 回答 1

5

不要“切碎”这些位。将要删除的位四舍五入:

  • 如果要删除的位小于 10000……,只需将其删除。
  • 如果要移除的位超过 10000……,则移除它们并将剩余位加 1。
  • 如果要删除的位正好是 10000……,则删除它们,如果最后一位为 1,则将剩余的位加 1。

因此:

  • 1011 0101 变为 1011。(0101 小于 1000……)
  • 1011 1010 变成 1100。(1010 大于 1000……)
  • 1011 1000 变成 1100。(1000 正好是 1000……,剩余的位是奇数,所以加一。)
  • 1010 1000 变成 1010。(1000 正好是 1000……,其余位是偶数,所以不要相加。)

(这是“四舍五入,平分秋色”。)

此外,浮点数中没有尾数。小数部分是有效数字。(尾数是对数。有效数是线性的。)

于 2013-09-28T12:18:57.213 回答