一个函数返回参数二进制中1的个数
第一种境界
int count_one_bits(unsigned int value)
{
int count = 0;
while (value)
{
if (value % 2 == 1)
count++;
value = value / 2;
}
return count;
}
#include<stdio.h>
int main()
{
int ret = 0;
unsigned int num = 0;
printf("请输入一个数:");
scanf_s("%d",&num);
ret = count_one_bits(num);
printf("二进制中1的个数:%d\n",ret);
system("pause");
}
第二种境界
int count_one_bits(int value)
{
int count = 0;
int i = 32;
while (i)
{
if (value & 1 == 1)
count++;
}
value = value >> 1;
i--;
return count;
}
#include<stdio.h>
int main()
{
int ret = 0;
int num = 0;
printf("请输入一个数:");
scanf_s("%d", &num);
ret = count_one_bits(num);
printf("二进制中1的个数:%d\n", ret);
system("pause");
}
第三种境界
#include<stdio.h>
int count_one_bits(int value)
{
int count = 0;
while (value)
{
count++;
value = value&(value - 1);
}
return count;
}
int main()
{
int ret = 0;
int num = 0;
printf("请输入一个数:");
scanf_s("%d", &num);
ret = count_one_bits(num);
printf("二进制中1的个数:%d\n", ret);
system("pause");
}