为什么说将一个负数的补码转换成真值时,需要一个“取反加一”的过程?

这是书上的话,附例题
【11100000】补 = -(00011111+1)=-00100000=-2的五次方=-32

下面这篇文章讲得很好,强烈推荐:

提示:在二进制里,0-1=1,1-0=1。

很简单,补码+源码=0,所以补码必须是源码中每一位相反,这样相加才能是11111...111,然后+1,不考虑进位,其余位都是0了。

我们还可以拿十进制计算来类比,求两个数字的和为 1000...000 的形式,怎么计算
比如计算 1365 + ? = 10000
一种简便的做法是先算1365 + ? = 9999
每一位都用9相减:1+8=9 3+6=9 6+3=9 5+4=9,因此1365 + 8694=9999
然后我们只要用8694+1=8695,就是1365 + ? = 10000的答案。
为什么先算9999,而不是直接算10000,因为直接算,就需要考虑借位的问题,麻烦。

所以为什么反码+1,其实也可以死算,只是麻烦而已。

在二进制计算的时候,我们不过是用1(2-1)代替9(10-1)
1-n无非两个1-1=0 1-0=1,所以就是取反