/**位运算思路:
* 2^x = n 因为n 与 n-1 必然为0 比如8(1000) 7(0111)
* 所以只要判断是否为0即可
*/
public boolean isPowerOfTwo(int n) {
if (n < 1){
return false;
}
return (n & n-1) == 0;
}
//每次右移一位
public boolean isPowerOfTwo(int n) {
while (n > 0 && n % 2 != 1) {
n = n >> 1;
}
return n == 1 ? true : false;
}
191.位1的个数
public int hammingWeight(int n) {
return Integer.bitCount(n);
}
public int hammingWeight(int n) {
int count = 0;
for (int i = 1; i <= 32; i++) {
count += n & 1;
n >>= 1;
}
return count;
}