题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路:
比如8用二进制表示为1000,7的二进制表示为0111,1000&0111为0,8!0,1的个数+1,8&7=0,则返回只有一个1。
故可以用n!=0,n=n&(n-1),1的个数++,最后返回1的个数即可。
代码(java):
public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
n=n&(n-1);
count++;
}
return count;
}
}