[这个贴子最后由x86在 2005/06/06 10:51pm 第 1 次编辑]
方法有很多,这里介绍的只是临时想的一个简单一点的方法:
就是把要转换的整数的每个位存到一个数组中,然后打印出来.
利用逻辑或运算获取其每一位的值.
另外有很多办法,比如我们书本上学习10进制转2进制的方法也很好,你可以自己试着做一下:)
#include
#include
void main()
{int i,j,k;
unsigned int out[16];
unsigned int temp[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,65536};
printf("please input the number (0-131071):\n");
scanf("%d",&i);
if(i>=131072)
{printf("input error! range 0 - 131071\n");
exit(0);
}
memset(&out,0,sizeof(unsigned int)*16);
for(k=0;k<16;k++)
{j=(i|temp[k]);
if(j>i)
out[16-k-1]=0;
if(j==i)
out[16-k-1]=1;
}
k=0;
check:if(out[k]==0)
{if(k==15)
{printf("0");
exit(0);
}
k++;
goto check;
}
while(k<16)
{printf("%d",out[k]);
k++;
}
} |