为什么没有比符号和幅度更好的浮点表示?

时间:2010-04-19 14:56:17

标签: floating-point double twos-complement

我们对整数有2个补码,允许我们执行操作而不用担心符号。这对实施层面有很大帮助。

同样,我们有很多浮点运算,但我们依赖于符号和幅度。是什么原因?

为什么像系统这样的2补码不能用于浮点数?

2 个答案:

答案 0 :(得分:4)

对于浮点数的添加,除了整数情况外,还有很多工作要做 - 您需要移动一个值以使指数匹配。通过比较,进行符号+幅度增加的任何额外成本都是微不足道的。

另请注意,单独的符号位对于乘法来说要好得多 - 您只需要一个无符号乘法器来处理所有情况,其中符号位分别处理。将其与二进制补码乘法进行比较,您必须对符号进行标准化或支持有符号/无符号乘法。

答案 1 :(得分:0)

如果你深入研究浮点数的标准表示,它实际上是一个类似整数的尾数和一个指数。我说类似整数,因为当归一化时,第一位总是'1' - 你知道两个数的乘积总是从0或1开始(在前一种情况下你需要左移结果一,并相应地调整指数,失去一点精度)。只要不溢出指数中可容纳的位数,乘法和除法就会很好。

另一方面,加法和减法需要将表示从规范化形式更改为指数匹配的表示形式。这就是为什么如果添加两个幅度差异很大的数字或者减去几乎相同的两个数字,你可以得到看似奇怪的结果。这就是为什么中间结果通常具有比标准的4字节和8字节浮点数和实数更多的精度数字。

你能在这里使用二进制补码表示法吗?也许......但你不能使用相同的规则来操纵表示。

我认为归结为信任那些研究过这个问题的专家。如果数百名博士和主要工程师认为当前的代表是最好的方法,那么我必须相信它们。