diff options
Diffstat (limited to 'SumTwoIntegers.java')
-rw-r--r-- | SumTwoIntegers.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/SumTwoIntegers.java b/SumTwoIntegers.java new file mode 100644 index 0000000..acb2590 --- /dev/null +++ b/SumTwoIntegers.java @@ -0,0 +1,30 @@ +import java.lang.*; +import java.util.*; + +class SumTwoIntegers { + public static int getSum(int a, int b) { + int bitmask = 0b1; + int carry = 0b0; + int sum = 0; + + while (bitmask != 0) { + int i = a & bitmask; + int j = b & bitmask; + + sum |= (i ^ j) ^ carry; + carry = (i & j) | ((i | j) & carry); + + bitmask <<= 1; + carry <<= 1; + } + return sum; + } + + public static void main(String[] args) { + int a = 12; + int b = 32; + int ans = getSum(a, b); + System.out.println(ans); + System.out.println(Integer.toBinaryString(ans)); + } +} |