题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 题解 只用整数自己判断,如果n!=0;计算器先加1;然后n=n&(n-1),就“减去”了n中的一个1,一直到减去所有的1,这个时候n==0,循环结束 从二进制的角度讲,n相当于在n - 1的最低位加上1,我们不断清除n的二进制表示中最右边的1并计数即可 public class Solution { public int NumberOf1(int n) { int count=0; while(n!=0){ ++count; n=n&(n-1); } return count; } }