When it comes to adding two integers without using the standard + or - operators, a bit of manipulation technique comes to the rescue.
This technique is based on the idea of simulating the addition process using bitwise operations, specifically using the bitwise AND, XOR, and left shift (<<) operators.
The Bit Manipulation Approach
We'll be working with two integers, a and b. The goal is to add them together without using the + operator.
Here's how it works:
- Use the bitwise
XOR (^)the operation to calculate the sum of the integers without considering the carry:
a ^ b
- Use the bitwise
AND (&)the operation followed by left shifting (<<) to calculate the carry:
(a & b) << 1
- Add the sum from step 1 and the carry from step 2:
(a ^ b) + ((a & b) << 1)
Example:
Let's consider a = 5 and b = 3:
a = 0101
b = 0011
Step 1 - Calculate the sum using XOR:
a ^ b = 0110 (6 in decimal)
Step 2 - Calculate carry using AND and left shift:
(a & b) << 1 = 0010 (2 in decimal)
Step 3 - Add sum and carry:
(a ^ b) + ((a & b) << 1) = 0110 + 0010 = 1000 (8 in decimal)
Code
class Solution {
public int getSum(int a, int b) {
if(a == 0){ return b;}
if(b == 0){ return a;}
int sum = -1, carry = b;
while(carry != 0) {
sum = a ^ b; // XOR Operation
carry = (a & b) << 1; // And operation and one left shift the bits
a = sum;
b = carry;
}
return sum;
}
}


0 Comments