# Position of rightmost bit with first carry in sum of two binary

• Difficulty Level : Medium
• Last Updated : 15 Jun, 2022

Given two non-negative integers a and b. The problem is to find the position of the rightmost bit where a carry is generated in the binary addition of a and b.

Examples:

```Input : a = 10, b = 2
Output : 2
(10)10 = (1010)2
(2)10 = (10)2.
1010
+   10
As highlighted, 1st carry bit from the right
will be generated at position '2'.

Input : a = 10, b = 5
Output : 0
'0' as no carry bit will be generated.```

Approach: Following are the steps:

1. Calculate num = a & b.
2. Find the position of rightmost set bit in num

## C++

 `// C++ implementation to find the position of``// rightmost bit where a carry is generated first``#include ``using` `namespace` `std;` `typedef` `unsigned ``long` `long` `int` `ull;` `// function to find the position of``// rightmost set bit in 'n'``unsigned ``int` `posOfRightmostSetBit(ull n)``{``    ``return` `log2(n & -n) + 1;``}` `// function to find the position of rightmost``// bit where a carry is generated first``unsigned ``int` `posOfCarryBit(ull a, ull b)``{``    ``return` `posOfRightmostSetBit(a & b);``}` `// Driver program to test above``int` `main()``{``    ``ull a = 10, b = 2;``    ``cout << posOfCarryBit(a, b);``    ``return` `0;``}`

## Java

 `// Java implementation to find the position of``// rightmost bit where a carry is generated first``class` `GFG {``    ` `    ``// function to find the position of``    ``// rightmost set bit in 'n'``    ``static` `int` `posOfRightmostSetBit(``int` `n)``    ``{``        ``return` `(``int``)(Math.log(n & -n) / Math.log(``2``)) + ``1``;``    ``}` `    ``// function to find the position of rightmost``    ``// bit where a carry is generated first``    ``static` `int` `posOfCarryBit(``int` `a, ``int` `b)``    ``{``        ``return` `posOfRightmostSetBit(a & b);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `a = ``10``, b = ``2``;``        ` `        ``System.out.print(posOfCarryBit(a, b));``    ``}``}` `// This code is contributed by Anant Agarwal.`

## Python3

 `# Python3 implementation to find the position of``# rightmost bit where a carry is generated first` `import` `math` `# function to find the position of``# rightmost set bit in 'n'``def` `posOfRightmostSetBit( n ):``    ``return` `int``(math.log2(n & ``-``n) ``+` `1``)``    ` `# function to find the position of rightmost``# bit where a carry is generated first``def` `posOfCarryBit( a , b ):``    ``return` `posOfRightmostSetBit(a & b)` `# Driver program to test above``a ``=` `10``b ``=` `2``print``(posOfCarryBit(a, b))` `# This code is contributed by "Sharad_Bhardwaj".`

## C#

 `// C# implementation to find the position of``// rightmost bit where a carry is generated first``using` `System;` `class` `GFG {``    ` `    ``// function to find the position of``    ``// rightmost set bit in 'n'``    ``static` `int` `posOfRightmostSetBit(``int` `n)``    ``{``        ``return` `(``int``)(Math.Log(n & -n) / Math.Log(2)) + 1;``    ``}``    ` `    ``// function to find the position of rightmost``    ``// bit where a carry is generated first``    ``static` `int` `posOfCarryBit(``int` `a, ``int` `b)``    ``{``        ``return` `posOfRightmostSetBit(a & b);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `a = 10, b = 2;``        ` `        ``Console.Write(posOfCarryBit(a, b));``    ``}``}` `// This code is contributed by Sam007.`

## Javascript

 ``

Output:

`2`

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up