public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
count++;
n=n&(n-1);
}
return count;
}
}
二进制中1的个数,原理是只要数字为非0的,那么就含有1,n&(n-1)能消除n中最低位的1,循环一下就出结果了,值得注意的是负数的情况,负数的时候计算机中存储是存的是补码,这时候仍然用这种方法恰好也能得到1的个数,可自行验证。