一个函数返回参数二进制中一的个数
方法一:
#include<stdio.h>
intmain()
{
int n=15;
int m=0;
m=count_one_bits(n);
printf("输出%d个一\n",m);
system("pause");
return 0;
}
int count_one_bits(unsignedint value)
{
int a=value;
int b=0;
while(a)
{
if(a%2==1)
{
b++;
}
a=a/2;
}
return b;
}
方法二:移位法
#include<stdio.h>
intcount_one_bit(int n)
{
int count=0;
int i=0;
for(i=0; i<32; i++)
{
if(n&1==1)
count++;
n=n>>1;
}
return count;
}
intmain()
{
int n=10;
int ret=count_one_bit(n);
printf("%d",ret);
system("pause");
return 0;
}
方法三:按位与
#include<stdio.h>
intcount_one_bit(int n)
{
int count=0;
while(n)
{
count++;
n=n&(n-1);
}
return count;
}
intmain()
{
int num=-1;
int ret=count_one_bit(num);
printf("%d\n",ret);
system("pause");
return 0;
}