2的幂
个数 n 是 222 的幂,当且仅当 nnn 是正整数,并且 nnn 的二进制表示中仅包含 111 个 111。
因此我们可以考虑使用位运算,将 n 的二进制表示中最低位的那个 1 提取出来,再判断剩余的数值是否为 000 即可。下面介绍两种常见的与「二进制表示中最低位」相关的位运算技巧。
第一个技巧是
n & (n - 1)
public bool IsPowerOfTwo(int n) {
if(n==1)
{
return true;
}
else
{
while(n>2){
if (n%2==1)
{
return false;
}
n=n/2;
}
if(n==2)
{
return true;
}
else
{
return false;
}
}
}