【问题标题】:Converting Decimal to Single-Precision IEEE 754将十进制转换为单精度 IEEE 754
【发布时间】:2025-12-01 08:30:01
【问题描述】:

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

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

二进制文件的 SCIENTIFIC NOTATION 是: 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 位)

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

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

(not enough reputation to post in-line images)

我得到了除了尾数的最后一位之外的所有内容。我所做的是将科学记数法中点后的前 23 位数字切掉。

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

【问题讨论】:

    标签: floating-point binary decimal ieee-754


    【解决方案1】:

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

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

    (这是“四舍五入,接近偶数”。)

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

    【讨论】: