写一个函数返回参数二进制中1的个数-创新互联
题目:写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
}
解题思路:首先写出这个数字的二进制序列并且定义一个计数器,由于数字在计算机中是以其二进制补码的形式进行存储,那么我们需要知道这个数字的二进制原码。然后通过循环右移其二进制序列和1进行按位与,如果按位与的结果是1,则计数器加一,否则继续此操作,直到右移完它的全部位数,则循环结束。
解法一:
#define _CRT_SECURE_NO_WARNINGS
#include
#include
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
#include
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;
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享题目:写一个函数返回参数二进制中1的个数-创新互联
文章路径:http://ybzwz.com/article/ehsgi.html