public int countBits(int x) {
int bits= 0;
while (x > 0) {
x &= (x - 1);
bits++;
}
return bits;
}
假设是X=5(0000 0101),我们不妨可以看看X-1=4(0000 0100);
那么此时X&X-1=0000 0100每次X与X-1进行一次与运算时,就会进行计数一次,然后再将该值赋回给X,那么它就可以通过这个方式计算出自身的共含有多少个二进制数的1了。