When adding two binary numbers by hand we keep the carry bits in mind and add it at the same time. But to do same thing in program we need a lot of checks. Recursive solution can be imagined as addition of carry and a^b (two inputs) until carry becomes 0.
Input : int x = 45, y = 45 Output : 90 Input : int x = 4, y = 78 Output : 82
Sum of two bits can be obtained by performing XOR (^) of the two bits. Carry bit can be obtained by performing AND (&) of two bits.
Above is simple Half Adder logic that can be used to add 2 single bits. We can extend this logic for integers. If x and y don’t have set bits at same position(s), then bitwise XOR (^) of x and y gives the sum of x and y. To incorporate common set bits also, bitwise AND (&) is used. Bitwise AND of x and y gives all carry bits. We calculate (x & y) << 1 and add it to x ^ y to get the required result.
One important observation is, if (x & y) becomes 0, then result is x ^ y.
- Recursive program to print formula for GCD of n integers
- Total pairs in an array such that the bitwise AND, bitwise OR and bitwise XOR of LSB is 1
- Leftover element after performing alternate Bitwise OR and Bitwise XOR operations on adjacent pairs
- Find subsequences with maximum Bitwise AND and Bitwise OR
- Addition of two numbers without carry
- Recursive Functions
- Recursive Insertion Sort
- Modular exponentiation (Recursive)
- Recursive Implementation of atoi()
- Recursive Bubble Sort
- Recursive Program for Binary to Decimal
- Recursive program for prime number
- Recursive Practice Problems with Solutions
- Recursive program to print all subsets with given sum
- Recursive program to generate power set
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.