1

我想知道是否有人可以快速为我仔细检查我的工作。如果给我两个负数:-33 和 -31。如果我将它们加在一起,使用 2 的补码会得到什么结果。

注意:操作必须使用 6 位的字长。


我的答案

所以在这样做之后,我计算出 -31 是 2 中的 100001。我还计算出 -33 是 2 的补码中的 011111。将它们加在一起时,我得到了 1000000,但是这个数字是 7 位,所以我砍掉了高位,因为我绑定到 6 位的字长。这会产生数字 000000。其中包含符号位 0,表示它是偶数。然而,由于 2 个负数的总和不能是偶数,这显然是一个溢出。所以我取 2 的 000000,即 000000。

所以答案应该是:0,因为发生了缓冲区溢出。你们觉得这对吗?谢谢。:)

4

1 回答 1

1

首先:-33 + (-31) 不能为0。

-33 在 6 位 2 的补码中无法表示。01 1111b+31十进制的,所以加法结果为 0。

所以正确的答案是这样的:没有结果,因为 -33 是 6 位表示中的无效数字。

在 7 位 2 的补码中-33 = 101 1111b

 110 0001
+101 1111
    =
1100 0000

等于-64。

于 2014-09-03T16:03:59.607 回答