题目
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
输入输出示例:
思路
举个例子,14的二进制位1110。先将1110-1得到1101,再将1110与1101做&操作,得到1100。以此类推,在进行三次这种操作之后,1110变成了0000。3次操作就对应了1110的1的个数。
代码
代码如下(示例):
public class Solution {
public int NumberOf1(int n) {
int count = 0;
while(n!=0){
count++;
n = n&(n-1);
}
return count;
}
}