Given an integer, write a function to determine if it is a power of two.
我的常规解法:对于INT_MIN的话是-2147483648的话恰好也满足二进制位中只有一个1的情况,因此应该排除,然后统计n中1的个数, 如果为1则返回true;

bool isPowerOfTwo(int n) 
{
    if(INT_MIN == n)
        return false;
    
    int cnt = 0;
    while(n)
    {
        n = n &(n-1);
        cnt++;
    }
    
    return (cnt ==1 )? true:false;
    
}

大神解法:

bool isPowerOfTwo(int n) 
{
    return (n>0)&&(!(n&(n-1))); 
}