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)

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 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 "<

C

 #include    // 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.

/div>

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

PHP



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

tags:

Bit Magic Bit Magic