void conver(char data[],const int x,const int n)
{
/*十进制的二进制输出*/
int i;
for(i=n-1;i>=0;i–)
{
data[n-1-i]=(’0′+((unsigned)(x&(1<<i))>>i));/*在这里为什么要加unsigned*/
}
}
int main()
{
char data[1024];
int n;
memset(data,0,sizeof(data));
data[sizeof(int)*8]=’\0′;
printf(“input a num:”);
scanf(“%d”,&n);
conver(data,n,sizeof(int)*8);
printf(“%s\n”,data);
getch();
exit(0);
}
我不知道为什么在conv中为什么要加unsigned定义哦,我做了以下试验:输入-8加了unsigned 结果为1111111111111000,但是如果没加的话就是/111111111111000,最高位变成了’/',不知道什么原因,希望高手帮忙解释一下
>> 本文固定链接: http://www.vcgood.com/archives/3132
>> 转载请注明: diantouxiao 2009年04月04日 于 C语言帝国 发表
#include<stdio.h>
#include<stdlib.h>
main()
{
int a;
char s[80];
scanf(“%d”,&a);
ltoa(a,s,2);
printf(“%s\n”,s);
}
我的想法 不过貌似对负数兼容性不是很好