第一种(只能求正数,模2除2)
#include<stdio.h>
int main()
{
int count=0;
int i;
printf("请输入一个数\n");
scanf("%d",&i);
while(i)
{
if(i%2==1)
{
count++;
}
i=i/2;
}
printf("count=%d",count);
return 0;
}
第二种(右移与循环)
#include<stdio.h>
int main()
{
int count=0;
int num;
int i;
printf("请输入一个数\n");
scanf("%d",&num);
for(i=0;i<32;i++)
{
if(((num>>i)&1)==1)
{
count++;
}
}
printf("count=%d",count);
return 0;
}
第三种(减一循环)
#include<stdio.h>
int main()
{
int count=0;
int num;
int i;
printf("请输入一个数\n");
scanf("%d",&num);
while(num)
{
count++;
num=num&(num-1);
}
printf("count=%d",count);
return 0;
}