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



My Personal Notes arrow_drop_up


Improved By : vt_m

Article Tags :
Practice Tags :



Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.