📜  关闭最右边的设置位

📅  最后修改于: 2021-05-25 08:14:46             🧑  作者: Mango

编写一个程序,以使整数的最右置位不置1。
例子 :

Input:  12 (00...01100)
Output: 8 (00...01000)

Input:  7 (00...00111)
Output: 6 (00...00110)

令输入数字为n。 n-1将使所有位在最右边的设置位(包括设置位)之后翻转。因此,执行n&(n-1)将给我们所需的结果。

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.


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


PHP


输出 :

The number after unsetting the rightmost set bit 6