C--统计二进制中1的个数
Posted L_add
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C--统计二进制中1的个数相关的知识,希望对你有一定的参考价值。
统计二进制中1的个数
题目内容:写一个函数返回参数二进制中1的个数
例如:
15
00001111
4个1
int count_one(size_t num)//size_t 无符号(方便接受负值)
{
int count = 0;
while (num)
{
if (num % 2 == 1)
count++;
num /= 2;
}
return count;
}
int main()
{
int num;
scanf("%d", &num);
int ret = count_one(num);
printf("%d\\n", ret);
return 0;
}
优化:右移
int count_one(int n)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
if (((n >> i) & 1) == 1)
count++;
}
}
int main()
{
int num;
scanf("%d", &num);
int ret = count_one(num);
printf("%d\\n", ret);
return 0;
}
循环32次,再优化
int count_one(int n)
{
int count = 0;
while (n)
{
n = n & (n - 1);
count++;
}
return count;
}
int main()
{
int num;
scanf("%d", &num);
int ret = count_one(num);
printf("%d\\n", ret);
return 0;
}
以上是关于C--统计二进制中1的个数的主要内容,如果未能解决你的问题,请参考以下文章