【问题标题】:negative floating-point numbers represented like negative integer numbers?负浮点数表示为负整数?
【发布时间】:2012-06-20 04:37:46
【问题描述】:

我知道今天的计算机如何存储负整数,大多数计算机都使用 2' 补码。我只是想知道 2' 补码方法也适用于浮点数等各种数字?

【问题讨论】:

    标签: floating-point twos-complement


    【解决方案1】:

    不,浮点数不使用 2 补码表示,但由于所有二进制实现都有一个符号位,因此可以保证对于所有值(符号没有意义的 NaN 除外)浮点数的整数表示可以测试

    【讨论】:

    • 根据 IEEE 754 标准,NaN 确实有符号位。它不能通过与 0 的比较来测试,因为每次使用 NaN 对顺序关系的测试都返回 false,但可以使用取决于语言的函数单独检查符号位。
    • 是的,NaN 有一个内部符号位,但它没有任何意义。由于 NaN 是“非数字”,因此符号和指数/尾数都没有任何意义。您可以使用尾数的位(除了定义它是否是安静的 NaN/信号 NaN 的 MSB)作为错误代码(并在含义中包含符号位),但整数比较
    【解决方案2】:

    有不同种类的浮点数表示,但我记得大多数类似于符号位(1 = 正数),然后是 2s 补码指数值,然后是最高有效位的 2s 补码尾数值指数为零时在1s的位置。

    请注意,在这种安排中,您可以使用整数比较来获得更大/更小。

    编辑

    以上显然是基于错误的内存,但http://en.wikipedia.org/wiki/Binary32有一个很好的解释。

    基本上,...

    • 第一位是数字的符号,也是尾数的符号
    • 接下来的几位是指数,可以是无符号的,也可以是使用 2 秒补码的。
    • 剩下的位是尾数,减去一个隐含的前导“1”。
    • 零是一种特殊情况...

    【讨论】:

    • 如果通过“整数比较”,您的意思是将浮点数的编码重新解释为整数并进行比较,那么这对于负数会失败。它也没有报告 -0 等于 +0。
    • two's com 仅当数字用于计算时才用于浮动,但对于存储,它们不使用 two's comp。请更正你的答案。
    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2015-06-25
    • 1970-01-01
    • 2018-04-10
    相关资源
    最近更新 更多