Skip to content
Related Articles

Related Articles

Turn off the rightmost set bit
  • Difficulty Level : Medium
  • Last Updated : 09 Nov, 2020

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


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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :