我知道答案是 29,但我不知道如何得出它。
通常我会取 011101 得到 100010 的倒数,然后加 1 得到 100011。
这个值是 35。那么答案是 29?
我知道答案是 29,但我不知道如何得出它。
通常我会取 011101 得到 100010 的倒数,然后加 1 得到 100011。
这个值是 35。那么答案是 29?
“二进制补码”这个词是模棱两可的。
011101
是十进制数 29 的二进制补码表示。011101
100011
011101 is 29 //Binary to Decimal
100011 + 011101 = 000000 //100011 is inverse+1
100011 = -011101
100011 = -29
没有“35”,因为在二进制补码系统中,任何以“1”开头的数字都是负数。这意味着,假设 6 位,任何大于 31 (011111) 的数字实际上都是负数。
100011 是正确的,它的十进制等值确实是 35。你怎么知道它应该是 29?
答案是35,而不是 29。
invert(0b011101) + 0b1 = 0b100010 + 0b1 = 0b100011 = 35
问题是 29 的二进制补码:
0b011101 = 29
“逆+1”过程用于编码负数。
你知道这个数字是正数,因为高位为零,所以:
1*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 16 + 8 + 4 + 0 + 1 = 29