提问者:小点点

使用2的补数的二进制算术(减法)的结果如何得到否定的答案?


好的,问题来了:11100111-110011111

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

我真的很困惑,对于上面的问题,我们怎么可能用2的补法得到一个否定的结果。我搜索了堆栈溢出,但没有帖子回答我的这个查询。谢谢,提前帮了我一把!


共1个答案

匿名用户

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

你也不正确地做了两个的恭维,你应该首先从另一个减去二进制数,然后再加1。这是维基百科的一个例子

   1111 1111                       255.
 − 0101 1111                     −  95.
  ===========                     =====
   1010 0000  (ones' complement)   160.
 +         1                     +   1
  ===========                     =====
   1010 0001  (two's complement)   161.