Number formed by the rightmost set bit in N

• Difficulty Level : Easy
• Last Updated : 04 Jul, 2022

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:
7 = 111, the number formed by the last set bit is 001 i.e. 1.
Input: N = 10
Output:
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 ``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

 ``

Output:

`4`

Time Complexity: O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up