您的位置:首页 > 编程语言 > C语言/C++

C语言 两种方法求一个十进制无符号数的二进制数中1的个数

2015-03-19 11:39 197 查看
首先要了解十进制数的二进制转换的函数,设置一个计数器p,当取余的数为1时,计数器加1,利用函数的声明调用 函数,最后在主函数中输出i的值。

#include <stdio.h>
int count(int m)
{
int p;
int i=0;
while(m!=0)
{
p=m%2;
m=m/2;
if(p==1)
{
i++;
}
}
return (i);
}
int main()
{
int a;
int b;
int count(int m);

scanf("%d",&a);
b=count(a);
printf("%d",b);
return 0;
}

如果这样改在数很大执行效率会快很多

#include <stdio.h>
int count(int m)
{
int p;
int i=0;
while(m!=0)
{
<strong><span style="color:#ff0000;">  p=m&1;      </span>//每个数与1按位与即求得m的最低位<span style="color:#ff0000;">
m=m>>1;     </span>//m向右移1位,即等同于对该数除2</strong>
if(p==1)
{
i++;
}
}
return (i);
}
int main()
{
int a;
int b;
int count(int m);

scanf("%d",&a);
b=count(a);
printf("%d",b);
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐