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つの手順を繰り返します。