代码如下:
return n > 0 && (n&(n-1) == 0);
衍生:一个数在其二进制表示中1的个数(包括负数)
0b10010 => 2
0b11111 => 5
public int count(int n) {
int c = 0;
if(n == 0) {
return c;
}
if(n < 0) {
n = 0x7FFFFFFF + n + 1;
c++;
}
while(n > 0) {
c++;
n = n&(n-1);
}
return c;
}