二进制中1的个数
题目
请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1,该函数输出2
思路
设置一个flag,将flag 1 左移。
方法2把一个整数减1,在和原数相与,会把改整数二进制表示中的最右边的1变成0。
代码
public int numberOf1(int n){
int count=0;
int flag=1;
for(int i=1; i<=32;i++)
{
if(n&flag)!=0)
{
count++;
}
flag=flag<<1;
}
return count;
}
public int numberOf1(int n){
int count=0;
while(n){
count++;
n=n&(n-1);
}
return count;
}