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

getchar();
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






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

Recommended Posts:



2.5 Average Difficulty : 2.5/5.0
Based on 47 vote(s)