0

好的,这就是问题所在:11100111 - 110011111

我知道我们必须使用 2 的补码方法来获得正确答案,但是当我通过将 110011111 更改为 001100000 然后将其添加到 11100111 来使用它时,我得到 (1)01001000。然而,这个问题的答案是 -10111000 [是的,这是一个否定的]。

对于上述问题,我们如何使用 2 的补码方法得到否定结果,我真的很困惑。我搜索了堆栈溢出,但似乎没有帖子回答我的这个查询。谢谢,提前帮助我!

4

1 回答 1

0

任何第一位为 1 的二进制数如果是有符号数,则为负数,因此由于您有 (1)0111000,因此它是负值。您似乎混淆了有符号和无符号数字。

您也错误地进行了二进制补码,您应该首先正常地从另一个二进制数中减去二进制数,然后再将其加 1。这是维基百科的一个例子

   1111 1111                       255.
 − 0101 1111                     −  95.
  ===========                     =====
   1010 0000  (ones' complement)   160.
 +         1                     +   1
  ===========                     =====
   1010 0001  (two's complement)   161.
于 2021-07-12T08:40:16.770 回答