力扣: 231. 2的幂

在这里插入图片描述
题解:
在这里插入图片描述
你通过上图会发现:一个数只要是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

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/115033965