方法一:
public static bool IsPowerOfTwo(int n)
{
while (n>1&&n%2==0)
{
n = n >> 1;
}
if (n==1)
{
return true;
}
return false;
}
第一次在实际问题中用到>>运算符,>>1表示 除以2,<<1表示乘以2。>>2表示除以2再除以2.
方法二:
public class Solution {
public bool IsPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
}
举例: 4 的 二进制:0100 三的二进制0011
0100
&
0011
结果0000
0000==0 return true;
那么问题在于 为什么 4 要和3 进行&。2要和1&,就能得到答案?