计算机在存储负数时,会存其补码。
负数首位不变,其余取反,得到反码,+1得到反码。有反码进行加运算,省去了减法。
对于这种变化。可以这样理解:
设负数原码为1XXX,先求其反码
此时借来溢出位 ,10000,即(1111+0001);用1111(10000-0001)-1XXX,得到每一位的相反数,然而反码的首位不变,所以需要+1000;反码即为(10000-0001)-1XXX+1000。
然后,求补码:
补码为反码+1;10000-0001-1XXX+1000+0001,即为10000-1XXX+1000
10000为溢出位,拿走,剩下-1XXX+1000。运算得-0XXX。
YYYY+1XXX=YYYY+(-0XXX)。等式成立。
经过如上一番变化,符号位去掉了,多了个负号,就可以正常运算了。