写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
返回 1的位数
}
方法一:原始余2再除2
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int count_one_bits(unsigned int value)
{
int count = 0;
while (value)
{
if (value % 2 == 1)
{
count++;
}
value = value / 2;
}
return count;
}
方法2:右移一位与1操作
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;
方法三:关注数据再内存存储方式:
int count_one_bits(int value)
{
int count = 0;
while (value)
{
count++;
value = value&(value - 1);
}
return count;
}
主函数:
int main()
{
int num = 0;
int ret = 0;
scanf("%d", &num);
ret = count_one_bits(num);
printf("count=%d\n", ret);
system("pause");
return 0;
}