题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
分析:因为不能用加减乘除,所有很容易想到转到位运算。
a^b //不带进位加
a&b //看哪几位有进位,进位左移一位,所以需要(a&b)<<1
- 递归
int Add(int a, int b)
{
if (b == 0){
return a;
}
int sum=a^b;
int carry=(a&b)<<1;
return Add(sum,carry);
}
- 循环
int Add(int a,int b)
{
int sum=a;
int carry=b;
while(b!=0){
sum=a^b;
carry=(a&b)<<1;
a=sum;
b=carry;
}
return sum;
}