您的位置:首页 > 其它

不用+-*/实现加法运算

2013-08-30 14:29 330 查看
不能用 + - * / 等符号,那么首先想到的就是位运算了。

直接上代码……

递归代码:

int solution1(int a, int b)
{
if (0 == b)
return a;
else
{
int sum = a ^ b;
int carry = (a & b) >> 1;
return solution1(sum, carry);
}
}


不用递归:

int solution2(int a, int b)
{
while(b)
{
int temp = a ^ b;
b = (a & b) >> 1;
a = temp;
}
return a;
}


另有一很巧妙的方法:利用地址偏移

int solution3(int a, int b)
{
char *c = (char *)a;
return (int)&c[b];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: