Calculate the sum of two integers a and b, but you are not allowed to use the operator +
and -
.
Example:
Given a = 1 and b = 2, return 3.
不用'+'和'-'实现两个整数相加,使用XOR计算各个位上不进位相加的结果,使用&计算各个位上的进位情况,使进位在每一步运算后左移1位。循环每一步直到进位为0。
class Solution { public: int getSum(int a, int b) { int res = 0, carry = INT_MAX; while (carry) { res = a ^ b; carry = a & b; carry <<= 1; a = res; b = carry; } return res; } }; // 3 ms