写一个函数返回参数二进制中 1 的个数
比如:unsigned int value = 15;
00000000 00000000 00000000 00001111
函数返回这个整数的二进制位中有4个1
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int count_one_bits1(unsigned int value)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
if ((value & (1 << i)))
{
count++;
}
}
return count;
}
int count_one_bits2(unsigned int value)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
if (((value >> i) & 1))
{
count++;
}
}
return count;
}
int count_one_bits3(unsigned int value)
{
int count = 0;
while (value)
{
value &= value - 1;
count++;
}
return count;
}
int main()
{
int num = 0;
printf("请输入一个整数:\n");
scanf("%d", &num);
printf("count_one_bits1: 有%d个1\n", count_one_bits1(num));
printf("count_one_bits2: 有%d个1\n", count_one_bits2(num));
printf("count_one_bits3: 有%d个1\n", count_one_bits3(num));
return 0;
}