📅  最后修改于: 2023-12-03 15:29:48.982000             🧑  作者: Mango
在计算机中,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的个数的方法。通过使用测试代码,我们可以保证代码的准确性。