问题:
给出两个整数a和b,求他们的和,但不能使用+等数字运算符
可以使用位运算符
样例:如果a=1, b= 2, 返回3
思路:
使用位运算符三个步骤:
1. 两个数进行异或运算
2. 再讲两个数相与,将结果左移一位
3. 将上面的结果相加得到最终结果
C++代码:
int add(int a, int b)
{
int sum;
int carry;
while(b ! = 0)
{
sum = a ^b;
carry = (a & b) << 1;
a = sum;
b = carry;
}
return a;
}
python代码:
def aplus(self, a, b):
while(b ! = 0):
sum = a ^ b
carry = (a & b) << 1
a = sum
b = carry
return a
运算结果python没通过,C++的可以过。