一个简单的小算法,利用二进制转化的对2取余法,而且对于二进制中1的个数,同样利用\2,%2,得出。
#include<stdio.h>
int main()
{int NumberOf1(int n);
int k=1,result=0;
int i=0,n,c;
scanf("%d",&n); c=NumberOf1(n);
while(n)
{
i=n%2;result=k*i+result;
k=k*10;n=n/2;
}
printf("二进制转化%d\n",result);
printf("there are %d ge 1",c);
}
int NumberOf1(int n)
{
int count = 0;
while (n)
{
if (n % 2 == 1)
{
count++;
}
n = n / 2;
}
return count;
}