#include <stdio.h>
int c_sec(int source)
{
int i=1;
int s=0;
while(i<=source)
{
if((source & i)>0) s++;
i*=2;
}
return s;
}
int main(int argc, char *argv[])
{
int i;
for(i=0; i<100; i++)
{
printf("%d的二进制里面有%d个1\n",i,c_sec(i));
}
return 0;
}
=============================================================
#include <stdio.h>
int c_sec(int source,int rag[])
{
int i=1;
int s=0;
int index=0;
int j=0;
while(i<=source)
{
if((source & i)>0)
{
s++;
rag[j]=index;
j++;
}
i*=2;
index++;
}
rag[j]=9999;
return s;
}
int main(int argc, char *argv[])
{
int i;
int rag[64]={0};
for(i=1; i<50; i++)
{
for(int k=0;k<64;k++){rag[k]=0;}
int s=c_sec(i,rag);
printf("%4d的二进制里面有%d个1 分别位于 ",i,s);
int j=0;
while(rag[j]!=9999)
{
printf("D[%d] ",rag[j]);
j++;
}
printf("\n");
}
return 0;
}