一、题目描述 二、思路 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; } }