Skip to content
Related Articles

Related Articles

Improve Article
Position of rightmost bit with first carry in sum of two binary
  • Difficulty Level : Medium
  • Last Updated : 25 Mar, 2021

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 <bits/stdc++.h>
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




<script>
 
// Javascript implementation to find the
// position of rightmost bit where a carry
// is generated first
 
// Function to find the position of
// rightmost set bit in 'n'
function posOfRightmostSetBit(n)
{
    return parseInt(Math.log(n & -n) /
                    Math.log(2)) + 1;
}
 
// Function to find the position of rightmost
// bit where a carry is generated first
function posOfCarryBit(a, b)
{
    return posOfRightmostSetBit(a & b);
}
 
// Driver code
var a = 10, b = 2;
 
document.write(posOfCarryBit(a, b));
 
// This code is contributed by noob2000
 
</script>

Output: 

2

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live




My Personal Notes arrow_drop_up
Recommended Articles
Page :