题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:分三步
1)不考虑进位,只是对两个数进行按位异或(二进制异或就是对应位相加)
2)统计进位
3)将进位添加到上面的不考虑进位时得到的结果上
class Solution {
public:
int Add(int num1, int num2)
{
int sum=0;
int carry=0;
do{
//二进制对应位相加相当于按位异或
sum=num1^num2;//先计算不带进位的值
//二进制计算进位相当于按位与再左移一位
carry=(num1&num2)<<1;//得到进位数
num1=sum;
num2=carry;
}while(num2!=0);
return sum;
}
};