题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
基础回顾
在做之前,我们可以先回顾一下补码,反码的基本知识。
思路解析
一个二进制数n,将该n减去1之后再与n做与运算,会将该二进制n最右边一个1变成0。所以二进制n有多少个1,就可以进行多少次该操作。
代码实现
public class Solution {
public int NumberOf1(int n) {
int count = 0;
while(n!=0){
count++;
n = n & (n-1);
}
return count;
}
}
运行效果如下: