若从头厘清,请先看原文链接,在看下面解释
详细解释:原文(七)为何这样求补码
为何负数的补码是反码加1?
首先理解负数就是做减法,而在模的概念中,减法等同于加上这个减数的同余数,比如举例16(10000)是模,(-2)即减2,等同于加上16-2=14,此时(+14)就可以表示-2。而(+14)是通过16-|-2|=14得来的。
到此在运算负数时,
负数(等价意义)=模-|负数| ------(1式)
。
然后解释为什么要反码加1
比如(-2)的反码是1101,而反码的绝对值是0010(2),(-2)+2应该=0,但从1101+0010=1111看并不等于0,如何才能等于0呢?1111加1就是10000(模),取低4位0000就等于0了。所以有如下公式:
负数反码+负数的绝对值+1=模------(2式)
。
而从上文(1式)知
负数(等价意义)=模-|负数|
将(2式)移项,得:
负数反码+1=模-|负数|-------(3式)
根据(3式)
所以在碰到运算是负数时,就等价于(3式)右边模-|负数|
,也就是同余,而同余此处称为补码。 再看(3式)左侧,负数反码+1=补码
帮助大家理解,谢谢!