将十进制转换为单精度 IEEE 754

sil*_*ver 1 floating-point binary decimal ieee-754

(-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) base 10 = 1000 0110 (8 bits)

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

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

(not enough reputation to post in-line images)
Run Code Online (Sandbox Code Playgroud)

我得到了所有但尾数的最后一位数字。我所做的是将科学记数法中的点后的前 23 位数字去掉。

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

Eri*_*hil 5

不要“砍”这些位。舍入要删除的位:

  • 如果要删除的位少于 10000……,只需删除它们。
  • 如果要移除的位超过 10000...,则移除它们并在剩余位上加 1。
  • 如果被移除的位正好是 10000……,则移除它们,如果最后一位是 1,则将它们添加到剩余的位中。

因此:

  • 1011 0101 变成 1011。(0101 小于 1000....)
  • 1011 1010 变成 1100。(1010 比 1000 多……)
  • 1011 1000 变成 1100。(1000 正好是 1000……,剩下的位是奇数,所以加一。)
  • 1010 1000 变成了 1010。(1000 正好是 1000……,剩下的位是偶数,所以不要加。)

(这是“四舍五入到最近,与偶数相关联”。)

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