输出二进制1的个数(有没人知道更简单的方法)

作者在 2013-12-05 11:00:12 发布以下内容
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,d,e,f,g,h,i,s,count;
scanf("%d",&s);
count=0;
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
for(d=0;d<=1;d++)
for(e=0;e<=1;e++)
for(f=0;f<=1;f++)
for(g=0;g<=1;g++)
for(h=0;h<=1;h++)
for(i=0;i<=1;i++)
{ if(s==a*pow(2,8)+b*pow(2,7)+c*pow(2,6)+d*pow(2,5)+e*pow(2,4)+f*pow(2,3)+g*pow(2,2)+h*pow(2,1)+i*pow(2,0))
{
if(a==1) count++;
if(b==1) count++;
if(c==1) count++;
if(d==1) count++;
if(e==1) count++;
if(f==1) count++;
if(g==1) count++;
if(h==1) count++;
if(i==1) count++;
printf("%d",count);
}
}
}

默认分类 | 阅读 970 次
文章评论,共2条
咖啡色裂变
2013-12-26 10:37
1
通过位运算,移位实现,就一句话的事。count=s-(s>>1)*2;试试看
咖啡色裂变
2013-12-26 10:41
2
直接判断奇偶数也行啊,一致的
游客请输入验证码
文章分类