今天分享一道题目,用三种方法来求解
二进制1的个数
方法1
我们的十进制除10和取余数就可以得到我们每一位的数字,那我们的二进制也可
以
#include<stdio.h>
int num_find_1(unsigned int n)
{
int count = 0;
while (n)
{
if (1 == n % 2)
{
count++;
}
n /= 2;
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
这是一种方法,另外一种就是我们可以用移位操作符来算
int num_find_1(int n)
{
int i = 0;
int count = 0;
for (i = 0; i < 32; i++)
{
if (((n >> i) & 1) == 1)
{
count++;
}
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
这个方法是不是也是特别妙呢,当然还有更妙的方法,请看!!!文章来源:https://www.toymoban.com/news/detail-613430.html
int num_find_1(int n)
{
int i = 0;
int count = 0;
while (n)
{
n = n & (n - 1);
count++;
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
相信看完总会学会一种方法,今天的分享就到这里啦,不知道大家有没有注意到我的开头不一样了,嘻嘻。文章来源地址https://www.toymoban.com/news/detail-613430.html
到了这里,关于C语言每日一题之整数求二进制1的个数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!