算法:a+b问题

题:输入两个整数a和b,求他们的和

解:
对于二进制的加法运算,若不考虑进位,则1+1=0,1+0=1,0+1=1,0+0=0,和异或运算^类似。考虑进位,0+0进位为0,1+0进位为0,0+1进位为0,1+1进位为1,和与运算&类似。

1
2
3
4
5
6
7
8
9
int bitAdd(int a,int b)
{
int sum = a^b;
int carry =(a&b)<<1;
if(carry == 0){
return sum;
}
return bitAdd(sum,carry);
}