publicinthammingWeight(int n){ int result = 0; while(n!=0){ n&=(n-1); result++; } return result; }
当然Java里也有统计二进制位数的方法,Integer.bitCount()
实现有点看不懂…
1 2 3 4 5 6 7 8 9
publicstaticintbitCount(int i){ // HD, Figure 5-2 i = i - ((i >>> 1) & 0x55555555); i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); i = (i + (i >>> 4)) & 0x0f0f0f0f; i = i + (i >>> 8); i = i + (i >>> 16); return i & 0x3f; }