利用位运算计算两个整数的加法运算
解析:对于整数x和y,其二进制中相同位,若值相同(同时为1或者0),则通过x&y可以求出其平均值(1或者0),在左移1位,则获得其和;若值不同(一个为1,一个为0),通过x^y获得其值,为其和的值;然后,把这两种情况的值相加,则为x和y的和;
旧版本:
int Add(int a, int b)
{
if(a==0 || b==0)
return a|b;
else
return ((a&b)<<1) + a^b;
}
上述代码有错,因为代码要用位运算实现两个整数的加法,所以,不能出现x+y这种。
新版本:
int Add(int a, int b)
{
if(a==0 || b==0)
return a|b;
int sum, carry;
sum = a ^ b;
carry= (a & b) << 1;
return Add(sum, carry);
}