首页 > 编程资源分享区 > C/C++源代码共享 > 请教一个10进制二进制输出的问题
2009
04-04

请教一个10进制二进制输出的问题

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,最高位变成了’/',不知道什么原因,希望高手帮忙解释一下


请教一个10进制二进制输出的问题》有 1 条评论

  1. yxyy3604 说:

    #include<stdio.h>
    #include<stdlib.h>
    main()
    {
     int a;
     char s[80];
     scanf(“%d”,&a);
     ltoa(a,s,2);
     printf(“%s\n”,s);
    }

     

    我的想法 不过貌似对负数兼容性不是很好

留下一个回复