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)));
}