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(循环跳出的条件)
本文介绍了一种不使用内置加法运算符的加法实现方法,通过不断处理进位,直到进位为0,实现了两个整数的加法。此方法首先进行不带进位的加法得到尾数,然后计算进位并将其前移一位,重复此过程直至进位消失。
653

被折叠的 条评论
为什么被折叠?



