x^y:实现不进位的加法,那么我们接下来只要把进位后的数据加上就可以了
x&y:这个操作即是找出相同位,因为只有当1&1=1,这种情况加法才会产生进位
(x&y)<<1:x与y相加后产生进位,那么应该在该位前一位+1,即左移一位
int Add(int x,int y)
{
if(0==y)
{
return x;
}
int sum=x^y;
int carry=(x&y)<<1;
return Add(sum,carry);
}
x^y:实现不进位的加法,那么我们接下来只要把进位后的数据加上就可以了
x&y:这个操作即是找出相同位,因为只有当1&1=1,这种情况加法才会产生进位
(x&y)<<1:x与y相加后产生进位,那么应该在该位前一位+1,即左移一位
int Add(int x,int y)
{
if(0==y)
{
return x;
}
int sum=x^y;
int carry=(x&y)<<1;
return Add(sum,carry);
}