题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
n = (n-1)&n;
count++;
}
return count;
}
}
思路:利用1100这个数字举例子,1100-1=1011&1100等于1000,也就是说一个二进制数每次减1在与它本身相与,则会去掉这个二进制数中最低位的1,循环到这个数为0时,利用一个计数标志位,则知道这个二进制数中1的个数了。