开始一个有点问题的算法
#include<stdio.h>
int count_one_bits(unsigned int value)
{
int a = value;
while (a > 0)
{
return a % 2 + (count_one_bits(a / 2));
}
}
int main()
{
int b = count_one_bits(15);
printf("%d\n", b);
return 0;
}
其计算的是一个数的二进制中一的个数,不是计算机内存放的二进制原数进行判断。
这个是正确的
#include<stdio.h>
int count_one_bits(unsigned int value)
{
int count = 0;
while (value)
{
count++;
value = value&(value - 1);//进行按位与操作
}
printf("二进制中1的个数:=%d\n", count);
}
int main()
{
int num = 15;
count_one_bits(num);
return 0;
}