📌  相关文章
📜  C#程序判断一个否是否是二的幂(1)

📅  最后修改于: 2023-12-03 15:29:48.982000             🧑  作者: Mango

判断一个数是否为2的幂

在计算机中,2的幂是非常常见的,判断一个数是否为2的幂在程序中也屡见不鲜。本文将介绍如何在C#程序中判断一个数是否为2的幂。

判断方法

对于一个数,只要其二进制表示中只有一个1,则它一定是2的幂。因此,我们可以通过统计二进制表示中1的个数来判断一个数是否为2的幂。

代码实现
public static bool IsPowerOfTwo(int n)
{
    if (n <= 0) 
    {
        return false;
    }
    int count = 0;
    while (n > 0) 
    {
        count += n & 1;
        n >>= 1;
    }
    return count == 1;
}
代码解释

此代码根据对二进制数的规律进行判断,首先对于非正数(n<=0)一定不是2的幂,然后使用一个while循环,每次将n进行右移一位,同时计数器count加上n的最低位是否为1。如果count等于1,说明该数是2的幂,返回true,否则返回false。

测试代码

以下是使用xunit框架编写的测试代码,用于测试上述代码的准确性。

public class PowerOfTwoTest
{
    [Theory]
    [InlineData(1, true)]
    [InlineData(2, true)]
    [InlineData(4, true)]
    [InlineData(8, true)]
    [InlineData(16, true)]
    [InlineData(12, false)]
    [InlineData(24, false)]
    public void Test(int n, bool expected)
    {
        Assert.Equal(expected, Solution.IsPowerOfTwo(n));
    }
}
结论

在本文中,我们介绍了如何在C#程序中判断一个数是否为2的幂,主要使用了统计二进制表示中1的个数的方法。通过使用测试代码,我们可以保证代码的准确性。