一、题目描述

二、思路
1、将n依次右移,与1做与运算
n为负时容易陷入死循环;
2、n不动,将1依次左移,
循环次数等于整数二进制的位数;
3、将该数减1后与原数进行与运算,会将最右边的1变为0,将进行与运算后的数记赋值给n,则原n有几个0就进行几次循环。
三、代码
public class Solution {
public int NumberOf1(int n) {
int count = 0;
while(n != 0){
count ++;
n=(n-1)&n;
}
return count;
}
}