"循环进位"应用于二进制的反码加减法运算。
1 + (-1) = 0001 + 1110 = 1111 = -0
2 + (-1) = 0010 + 1110 = 10000 = (循环进位) 0001 = 1
1 + (-2) = 0001 + 1101 = 1110 = -12 + 0 = 0010 + 1111 = 10001 = 0010 = 2
-1 + (-1) = 1110 + 1110 = 11100 = 1101 = -2
如上,两个正数相加,最高位进位位1表示溢出,不会再往上进。一正一负,若和为负,不会产生进位;若和为正,必会产生进位。观察两个加数绝对值的大小可以看出这一规律。两个负数相加,若不溢出,则会产生进位。
一正一负相加,和补码相比,负数的那个加数少加了一(只取反,没加一)。结果为负时,由于结果应是反码表示的负数,和补码相比,补码结果多加了一,恰好前面计算少加了一,因此结果是正确的反码。又知必然无进位,因此按"循环进位"法则计算没问题;结果为正时,少加的那个一就必须真正地加上了。又由上分析知会产生进位,就描述为"循环进位"。
两负数相加,与补码相比,少加了2。又因为结果是负数,抵消一个1。又因为必然有进位,所以按照"循环进位"是正确的。
因此,反码加法按照"循环进位"的法则来算才能保证其正确性