1 + (-1) = 0001 + 1110 = 1111 = -0
2 + (-1) = 0010 + 1110 = 10000 = (循環(huán)進位) 0001 = 1
1 + (-2) = 0001 + 1101 = 1110 = -12 + 0 = 0010 + 1111 = 10001 = 0010 = 2
-1 + (-1) = 1110 + 1110 = 11100 = 1101 = -2
如上,兩個正數(shù)相加,最高位進位位1表示溢出,不會再往上進。一正一負(fù),若和為負(fù),不會產(chǎn)生進位;若和為正,必會產(chǎn)生進位。觀察兩個加數(shù)絕對值的大小可以看出這一規(guī)律。兩個負(fù)數(shù)相加,若不溢出,則會產(chǎn)生進位。
一正一負(fù)相加,和補碼相比,負(fù)數(shù)的那個加數(shù)少加了一(只取反,沒加一)。結(jié)果為負(fù)時,由于結(jié)果應(yīng)是反碼表示的負(fù)數(shù),和補碼相比,補碼結(jié)果多加了一,恰好前面計算少加了一,因此結(jié)果是正確的反碼。又知必然無進位,因此按"循環(huán)進位"法則計算沒問題;結(jié)果為正時,少加的那個一就必須真正地加上了。又由上分析知會產(chǎn)生進位,就描述為"循環(huán)進位"。
兩負(fù)數(shù)相加,與補碼相比,少加了2。又因為結(jié)果是負(fù)數(shù),抵消一個1。又因為必然有進位,所以按照"循環(huán)進位"是正確的。
因此,反碼加法按照"循環(huán)進位"的法則來算才能保證其正確性。1