1.A+B的问题

178 阅读1分钟

问题:

给出两个整数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++的可以过。