## Problem

Problem ID: 371

Title: Sum of Two Integers

Description: Given two integers a and b, return the sum of the two integers without using the operators + and -.

## Thoughts

This problem is a good revision for bitwise arithmetic.

## Solution

### Explanation

Instead of manually evaluating the individual bit, we can recursively calculate the new sum without carry and swap the other operand with the carry.

For example:

a: 0 0 1 0 1 1 0 1
b: 0 0 1 1 0 1 1 0


New sum without carry (a^b):

0 0 0 1 1 0 1 0


Carry(a&b << 1):

0 1 0 0 1 0 0 0


Now the answer becomes sum(a^b, a&b <<1)

Implementation

class Solution {
public:
int getSum(int x, int y) {

// Iterate till there is no carry
while (y != 0)
{
unsigned carry = x & y;

x = x ^ y;

y = carry << 1;
}
return x;

}
};