将一个十进制数转换为二进制

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int x,len,i;
float num;
scanf("%d",&x);
if(x==0)printf("%d",x);
if(x>0){
for(i=1;;i++)
{
num=pow(2,i);
if(x<num)break;
}
len=i;
char str[len];
str[0]=49;
num=pow(2,len-1);
for(i=1;i<len;i++)
{
num=num+pow(2,len-i-1);
if(num<=x)str[i]=49;
else {str[i]=48;num=num-pow(2,len-i-1);}
}
puts(str);
}
if(x<0)
{
x=abs(x);
for(i=1;;i++)
{
num=pow(2,i);
if(x<num)break;
}
len=i;
char str1[len];
str1[0]=49;
num=pow(2,len-1);
for(i=1;i<len;i++)
{
num=num+pow(2,len-i-1);
if(num<=x)str1[i]=49;
else {str1[i]=48;num=num-pow(2,len-i-1);}
}
putchar('-');
puts(str1);
}
return 0;
}

posted @ 2017-11-30 09:38  If-only-  阅读(394)  评论(0)    收藏  举报