我想知道是否有人可以快速地为我检查我的工作。如果我给出两个负数:-33和-31。如果我将它们加在一起,那将是使用2的补码。
注意:必须使用6位字长才能进行操作。
MY ANSWER
所以在这之后,我计算出-31在2&2中为100001。我还计算了-33在2的补码中为011111。当它们加在一起时,我得到了1000000,但是这个数字是7位数,所以我切断了高阶位,因为我被绑定到6位的字长。这产生数字000000.其中包含符号位0,意味着它将是偶数。然而,由于2个负数的总和不能是偶数,它显然是溢出的。所以我拿了000000的2,这就是000000。
所以答案应该是:0因为发生了缓冲区溢出。这对你们好吗?谢谢。 :)
答案 0 :(得分: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。