好的,问题来了:11100111-110011111
我知道这样一个事实,我们必须使用2的补足法来获得正确的答案,但当我使用它时,将110011111改为001100000,然后将其加到11100111,我得到(1)01001000。然而,这个问题的答案是-10111000[是的,那是否定的]。
我真的很困惑,对于上面的问题,我们怎么可能用2的补法得到一个否定的结果。我搜索了堆栈溢出,但没有帖子回答我的这个查询。谢谢,提前帮了我一把!
任何第一位为1的二进制数如果是有符号数则为负数,因此由于有(1)0111000,所以它是负值。看来你混淆了有符号和无符号的数字。
你也不正确地做了两个的恭维,你应该首先从另一个减去二进制数,然后再加1。这是维基百科的一个例子
1111 1111 255.
− 0101 1111 − 95.
=========== =====
1010 0000 (ones' complement) 160.
+ 1 + 1
=========== =====
1010 0001 (two's complement) 161.