int Add(int num1,int num2)
{
int result = 0;
int carry = 0;
do{
result = num1 ^ num2; //不带进位的加法,相同为0,不同为1
carry = (num1 & num2) << 1; //只有两位同时为1才得进位1,并向前移一位
num1 = result;
num2 = carry;
}while(carry != 0); // 进位不为0则继续执行加法处理进位
return result;
}
类比十进制的加法,先不考虑进位,两个数同一位相加留个“尾数”result,两个数同一位相加的进位向前移动一位carry,两者相加,而要求着两数相加,可重复上一步骤,直至进位为0(循环跳出的条件)