1. 判断一个整数是否是2的N次方?
bool foo(int n)
{
if(n == 0) return true;
if(n < 0) return false;
return !(n&n-1);
}
2.统计一个整数的二进制中1的个数
int foo(int n)
{
int nCount = 0;
while(n)
{
nCount++;
n = n&(n-1);
}
return nCount;
}
x&x-1表示把数字x对应的二进制的最右边的1变为0。