3

二进制值采用 2s 补码形式。

如果我要添加 110001 (-15) 和 101110 (-18),并且答案必须存储在 6 位整数中,这是下溢/上溢吗?

4

3 回答 3

2

这是溢出,你的教授是正确的。您正在存储更多可以保存在分配空间中的位(即使这些位表示的数字是负数。)

下溢是当位通过大数学移位而归零时。在定点数学中很常见。将一个非常小的数字除以一个非常大的数字,您经常会得到 0。这就是下溢。

于 2010-04-27T23:46:09.560 回答
1

有一个很好的例子讨论了添加两个内容为 -70 和 -90 的寄存器并将其存储在第三个寄存器中。

Let's assume R1[8 bits] = -70 R2[8 bits] = -90 Result[9 bits] = -160, an extra bit for overflow.

此示例在下面参考文献1的 overflow_signed_detection 页面上进行了讨论。使用本页讨论的规则,该示例可以缩放为任意两个有符号十进制数。

于 2011-09-23T14:43:18.423 回答
0

编辑:我刚刚意识到 -33 对于 6 位来说太大了,所以结果不是 -33 而是 +31,因此它肯定是溢出:)

如果绝对不是溢出,则添加两个数字并获得正确的结果。溢出的一个示例是将两个负数相加并得到一个正数作为结果(反之亦然)。

例如,如果将两个正数 0x7fffffff 和 0x00000001 相加,则得到负数 0x80000000,这肯定是错误的,因此会溢出。

也许您将溢出与进位混淆了?

于 2010-05-23T11:19:03.497 回答