0

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

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

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

4

2 回答 2

4

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

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

于 2010-04-19T15:03:28.287 回答
0

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

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

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

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

于 2010-04-19T16:44:43.703 回答