写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
}
分析:由题目可知,输入一个无符号的十进制整型数字,判断其在二进制时有多少个1
如果让我们求一个十进制数中1 的个数,我们会将这个数除以10之后看余数是不是1,然后将得到的商除以10看余数是不是1,依次类推,直到商为0.
那么我们求二进制数的时候也一样,将二进制除以2,看得到的余数是不是1,再用商除以2,一直到商为0为止。
源代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int count_one_bits(unsigned int value) {
int count = 0;
while (value) {
// value为0时跳出循环
if (value % 2 == 1) {
//如果余数为1,则count自动+1
count++;
}
value = value / 2;
//将得到的商再付给value
}
return count;
}
int main() {
int n = 0;
printf("请输入一个正数:");
scanf("%d", &n);
int num = count_one_bits(n);
//num为记录1的个数
printf("num=%d\n", num);
system("pause");
return 0;
}