题解:
你通过上图会发现:一个数只要是2的幂次方。那么经过n次除以2其结果终为1
且这个数对于2取余的结果一直是0
那么代码如下:
bool isPowerOfTwo(int n){
if(n==0)
return false;
while(n%2==0)
{
n=n/2;
}
if(n==1)
{
return true;
}
else
{
return false;
}
}
那么有没有更巧的方法呢?
同过上图你会发现只要是2的幂,其二进制的结果都是 前面一个1 后面都是0
那么会有如下的规律:
通过上图你会总结出如下的规律:
一个数n只要是2的幂那么 : n&(n-1)等于 0
代码如下:
bool isPowerOfTwo(int n){
if(n<=0)
return false;
if(n==1)
return true;
if(n&(n-1))
{
return false;
}
else
{
return true;
}
}
本文的总结来自于:https://www.bilibili.com/video/BV13s41197Ub