您的位置:首页 > 其它

位运算-不用加减乘除做加法。

2016-04-08 23:34 232 查看

位运算- 不用加减乘除做加法

step1:按位与是查看两个数哪些二进制位都为1,这些都是进位位,结果需左移一位,表示进位后的结果

step2:异或是查看两个数哪些二进制位只有一个为1,这些是非进位位,可以直接加、减,结果表示非进位位进行加操作后的结果

step3:n1&n2是查看有没有进位位了,如果有,需要重复step1、step2;如果没有,保留n1、n2上二进制为1的部分,用或将之合为一个数,即为最后结果

class Solution {
public:
int Add(int num1, int num2)//不用加减乘除做加法.
{
int n1,n2;
n1 = (num1&num2)<<1;
n2 = num1^num2;
while (n1&n2) {
num1 = n1;num2 = n2;
n1 = (num1&num2)<<1;
n2 = num1^num2;
}
return n1|n2;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: