Question
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.
Solution
Compute sum (using xor) and carry (using and) separately.
class Solution {
public int getSum(int a, int b) {
if(b == 0) return a;
int sum = a ^ b; // sum for each bit, ignoring carry
int carry = (a & b) << 1;
return getSum(sum, carry);
}
}