Turn off the rightmost set bit

Write a program that unsets the rightmost set bit of an integer. **Examples :**

Input: 12 (00...01100) Output: 8 (00...01000) Input: 7 (00...00111) Output: 6 (00...00110)

Let the input number be n. n-1 would have all the bits flipped after the rightmost set bit (including the set bit). So, doing n&(n-1) would give us the required result.

## C++

`#include <bits/stdc++.h>` `using` `namespace` `std;` `// unsets the rightmost set bit` `// of n and returns the result` `int` `fun(unsigned ` `int` `n)` `{` ` ` `return` `n & (n - 1);` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `n = 7;` ` ` `cout<<` `"The number after unsetting the"` `;` ` ` `cout<<` `" rightmost set bit "` `<<fun(n);` ` ` `return` `0;` `}` `//This code is contributed by rathbhupendra` |

## C

`#include <stdio.h>` `// unsets the rightmost set bit` `// of n and returns the result` `int` `fun(unsigned ` `int` `n)` `{` ` ` `return` `n & (n - 1);` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `n = 7;` ` ` `printf` `(` `"The number after unsetting the"` `);` ` ` `printf` `(` `" rightmost set bit %d"` `, fun(n));` ` ` `return` `0;` `}` |

## Java

`// Java program to unset the` `// rightmost set bit of an integer.` `class` `GFG {` ` ` `/* unsets the rightmost set bit` ` ` `of n and returns the result */` ` ` `static` `int` `fun(` `int` `n)` ` ` `{` ` ` `return` `n & (n - ` `1` `);` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `main(String arg[])` ` ` `{` ` ` `int` `n = ` `7` `;` ` ` `System.out.print(` `"The number after unsetting "` ` ` `+ ` `"the rightmost set bit "` `+ fun(n));` ` ` `}` `}` `// This code is contributed by Anant Agarwal.` |

## Python3

`# unsets the rightmost set bit` `# of n and returns the result` `def` `fun(n):` ` ` `return` `n & (n` `-` `1` `)` `# Driver code` `n ` `=` `7` `print` `(` `"The number after unsetting the rightmost set bit"` `, fun(n))` `# This code is contributed` `# by Anant Agarwal.` |

## C#

`// C# program to unset the` `// rightmost set bit of an integer.` `using` `System;` `class` `GFG {` ` ` `/* unsets the rightmost set bit` ` ` `of n and returns the result */` ` ` `static` `int` `fun(` `int` `n)` ` ` `{` ` ` `return` `n & (n - 1);` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `n = 7;` ` ` `Console.Write(` `"The number after unsetting "` ` ` `+ ` `"the rightmost set bit "` `+ fun(n));` ` ` `}` `}` `// This code is contributed by Sam007` |

## Javascript

`<script>` `// JavaScript program for the above approach` ` ` `/* unsets the rightmost set bit` ` ` `of n and returns the result */` ` ` `function` `fun(n)` ` ` `{` ` ` `return` `n & (n - 1);` ` ` `}` `// Driver Code` ` ` `let n = 7;` ` ` `document.write(` `"The number after unsetting "` ` ` `+ ` `"the rightmost set bit "` `+ fun(n));` `// This code is contributed by susmitakundugoaldanga.` `</script>` |

## PHP

`<?php` `// unsets the rightmost set bit` `// of n and returns the result` `function` `fun(` `$n` `)` `{` `return` `$n` `& (` `$n` `- 1);` `}` `// Driver Code` `$n` `= 7;` `echo` `"The number after unsetting the"` `.` ` ` `" rightmost set bit "` `, fun(` `$n` `);` `// This code is contributed by vt_m.` `?>` |

**Output :**

The number after unsetting the rightmost set bit 6

Please write comments if you find the above code/algorithm incorrect, or find better ways to solve the same problem

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.