力扣:剑指 Offer 65 不使用四则运算符号 + - * /实现加法运算

在这里插入图片描述

class Solution {
    public int add(int a, int b) {
        int sum = 0;
        int carry =0;
    do {
            sum = a^b;         //二进制的按位相加实际等效于异或。
            carry = (a&b) << 1;//二进制的每位的进位计算等效于按位与,然后左移。
            a = sum;
            b = carry;
        } while (b != 0);
        return sum;
    }
}

举个例子:5 + 7 = 12
在这里插入图片描述
下面不使用四则运算符号 + - * /实现加法运算:
二进制的按位相加实际等效于异或。
二进制的每位的进位计算等效于按位与,然后左移
重复使用前两步,直到没有进位为止。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq1350975694/article/details/107828058