強制ボタン:剣は、加算を達成するために4つの算術記号+-* /を使用せずにオファー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
ここに画像の説明を挿入
は、加算演算を実現するために4つの算術記号+-* /を使用しません。
バイナリビットごとの加算は、実際にはXORと同等です。
バイナリシステムの各ビ​​ットのキャリー計算は、ビットごとのANDに相当し、左シフトします。
キャリーがなくなるまで、最初の2つの手順を繰り返します。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq1350975694/article/details/107828058