利用位运算
n&(n-1)
n : 10110100
n-1 : 10110011
n&(n-1) : 10110000
剑指Offer应用题目:
求二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
public class Solution {
public int NumberOf1(int n) {
int cnt = 0;
while(n!=0){
n = n&(n-1);
cnt++;
}
return cnt;
}
}