写一个函数返回参数二进制中1的个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一个函数返回参数二进制中1的个数相关的知识,希望对你有一定的参考价值。

题目:写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
}
解题思路:首先写出这个数字的二进制序列并且定义一个计数器,由于数字在计算机中是以其二进制补码的形式进行存储,那么我们需要知道这个数字的二进制原码。然后通过循环右移其二进制序列和1进行按位与,如果按位与的结果是1,则计数器加一,否则继续此操作,直到右移完它的全部位数,则循环结束。
解法一:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int count_one(unsigned int value)
{
int count = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
if (value >> i & 0x1)
{
count++;
}
}
return count;
}
void main()
{
unsigned int input = 0;
printf("请输入一个数:");
scanf("%d", &input);
printf("%d\n", count_one(input));
system("pause");
return 0;
}
解法二:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int count_one(unsigned int n)
{
int count = 0;
while (n!=0)
{
n=n&(n - 1);
count++;
}
return count;

}
void main()
{
unsigned int input = 0;
printf("请输入一个数:");
scanf("%d", &input);
printf("%d\n", count_one(input));
system("pause");
return 0;
}

以上是关于写一个函数返回参数二进制中1的个数的主要内容,如果未能解决你的问题,请参考以下文章

写一个函数返回参数二进制中 1 的个数

写一个函数返回参数二进制中 1 的个数(三种方法)

用一个函数返回参数二进制中1的个数

用一个函数返回参数二进制中1的个数

用一个函数返回参数二进制中1的个数

用一个函数返回参数二进制中1的个数