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** nd 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; ` `} ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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.. ` |

*chevron_right*

*filter_none*

**Output:**

4

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.