5 二进制为101 返回2
-1二进制全为1(负数采用补码表示) 返回32
这里利用和判断一个数是否是2的幂的方法一致,利用n&(n-1)每次会去除掉最低位的1
求二进制中1的个数
int getNumOfOne(int n) {
int sum = 0;
while (n) {
sum++;
n &= (n - 1);
}
return sum;
}
判断是否是2的幂
bool isTwoPower(int n) {
if (n < 0)
return false;
if (n & n - 1)
return false;
return true;
}