Given an integer N, the task is to find an integer M formed by taking the rightmost set bit in N i.e. the only set bit in M will be the rightmost set bit in N and the rest of the bits will be unset.
Examples:
Input: N = 7
Output: 1
7 = 111, the number formed by the last set bit is 001 i.e. 1.
Input: N = 10
Output: 2
10 = 1010 -> 0010 = 2
Input: N = 16
Output: 16
Approach:
- Store x = n & (n – 1) which will unset the first set bit from the right in n.
- Now, update n = n ^ x to set the changed bit and unset all the others which is the required integer.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Function to return the integer formed // by taking the rightmost set bit in n int firstSetBit( int n)
{ // n & (n - 1) unsets the first set
// bit from the right in n
int x = n & (n - 1);
// Take xor with the original number
// The position of the 'changed bit'
// will be set and rest will be unset
return (n ^ x);
} // Driver code int main()
{ int n = 12;
cout << firstSetBit(n);
return 0;
} |
Java
// Java implementation of the approach class geeks
{ // Function to return the integer formed
// by taking the rightmost set bit in n
public static int firstSetBit( int n)
{
// n & (n - 1) unsets the first set
// bit from the right in n
int x = n & (n- 1 );
// Take xor with the original number
// The position of the 'changed bit'
// will be set and rest will be unset
return (n ^ x);
}
// Driver Code
public static void main (String[] args)
{
int n = 12 ;
System.out.println(firstSetBit(n));
}
} // This code is contributed by // sanjeev2552 |
Python3
# Python3 implementation of the approach # Function to return the integer formed # by taking the rightmost set bit in n def firstSetBit(n):
# n & (n - 1) unsets the first set
# bit from the right in n
x = n & (n - 1 )
# Take xor with the original number
# The position of the 'changed bit'
# will be set and rest will be unset
return (n ^ x)
# Driver code n = 12
print (firstSetBit(n))
# This code is contributed by mohit kumar 29 |
C#
// C# implementation of the approach using System;
class geeks
{ // Function to return the integer formed
// by taking the rightmost set bit in n
public static int firstSetBit( int n)
{
// n & (n - 1) unsets the first set
// bit from the right in n
int x = n & (n-1);
// Take xor with the original number
// The position of the 'changed bit'
// will be set and rest will be unset
return (n ^ x);
}
// Driver Code
public static void Main ()
{
int n = 12;
Console.WriteLine(firstSetBit(n));
}
} // This code is contributed by // anuj_67.. |
Javascript
<script> // JavaScript implementation of the approach // Function to return the integer formed // by taking the rightmost set bit in n function firstSetBit(n)
{ // n & (n - 1) unsets the first set
// bit from the right in n
let x = n & (n - 1);
// Take xor with the original number
// The position of the 'changed bit'
// will be set and rest will be unset
return (n ^ x);
} // Driver code let n = 12;
document.write(firstSetBit(n));
// This code is contributed by Manoj. </script> |
Output:
4
Time Complexity: O(1)
Auxiliary Space: O(1)