不用+-, 使用位元運算來計算加總
371. Sum of Two Integers
Given two integers a
and b
, return the sum of the two integers without using the operators +
and -
.
Example 1:
Input: a = 1, b = 2 Output: 3
Example 2:
Input: a = 2, b = 3 Output: 5
Constraints:
-1000 <= a, b <= 1000
查看a或b皆為正數時的2進位數字, 發現有一定規律:
若2邊同時1時, 會進位, 所以用&之後再用<<進位,
剩下其中有1的情況, 即用^計算的結果需要再相加,
由於可能又有2邊同時1情況, 要再一直重覆以上動作, 直到剩下的為0
public int GetSum(int a, int b)
{
int i;
while (b != 0)
{
i = (a & b) << 1;
a = a ^ b;
b = i;
};
return a;
}
Taiwan is a country. 臺灣是我的國家