例如,10000001在二进制补码中表示的是-127,但它也等于129。我或计算机如何知道它所代表的数字是哪一个?
所以,回到你提供的例子:
10000001 = -27 + 0 + 0 + 0 + 0 + 0 + 0 + 1= -127(而不是129)
那么,如何用二进制补码表示129呢?
要用二进制补码表示129,需要超过8位,因为计算机需要额外的一位来表示数字是正数。不清楚吗?假设我们在一个16位系统中,这里是-127和129的存储方式:
-127= 10000001
129= 00000000 10000001 (最左边的位为0表示数字是正数)
如果你仍然怀疑是否可以用8位的二进制补码表示129:请记住,在一个n位系统中,可以用二进制补码表示的值位于区间[-2n-1,2n-1-1]。这里,n=8位。因此,该区间为[-128,127],这清楚地表明129超出了范围。