題目描述
給出兩個整數a和b, 求他們的和, 但不能使用 + 等數學運算符。
測試用例
解題思路
不能用+号,那麼隻能用位運算來求解了,實際計算機中的加法也是用位運算來做的。
計算機隻知道0,1,根據加法的性質,可以得出下表:
a b c
0 0 0
0 1 1
1 0 1
1 1 0
可以看到,這正和異或運算符^的結果一緻。
另外對于進位:
a b c
0 0 0
0 1 0
1 0 1
1 1 1
很明顯示,這正是與運算符&的結果。
到這裡,問題就引刃而解了,不斷的異或操作直到進位為0.
class Solution {
public:
/*
* @param : An integer
* @param : An integer
* @return: The sum of a and b
*/
int aplusb(int a, int b) {
// write your code here
while (b != ) {
int _a = a ^ b;
int _b = (a & b) << ;
b = _b;
a = _a;
}
return a;
}
};