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

时间:2013-09-28 10:34:56

标签: floating-point binary decimal ieee-754

( - 128.4875)base 10 to Single-Precision IEEE 754

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

二进制文件的科学符号是: 1。 0000 0000 1111 1001 1001 1001 ... x 2 ^ 7

SIGN BIT是: 1 (1位)

MANTISSA 0000 0000 1111 1001 1001 100 (23位)

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

根据在线转换器检查我的回答:

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

(not enough reputation to post in-line images)

我得到了一切但是尾数的最后一位数。我所做的是在科学记数法之后切掉前两位数字。

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

1 个答案:

答案 0 :(得分:4)

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

  • 如果要删除的位数小于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 ......,剩余的位是偶数,所以不要添加。)

(这是“圆到最近,与偶数相关”。)

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