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