十进制转二进制c语言,2进制转10进制方法
一、用C语言表达把十进制纯小数转换为二进制纯小数的代码
#include
#include
#include
/*该函数可以实现小于整型数据的任意进制之间转换*/
/*以下函数将a进制数s转换成b进制并输出*/
voidf(inta,intb,chars[])
{charr[17];
inti,n,t,k;
for(n=strlen(s)-1,i=t=0;*(s+i)!='\0';i++,n--)/*这里先转换成十进制数*/
{if(*(s+i)
t+=(*(s+i)-'0')*int(pow(a,n));
else
t+=(*(s+i)-'A'+10)*int(pow(a,n));
}
for(i=0;t!=0;i++)/*再转换成b进制*/
{k=t%b;
if(k>9)r[i]='A'+k-10;
elser[i]='0'+k;
t/=b;
}
r[i]='\0';
s=strrev(r);
printf("%s",s);
}
二、用C语言编写二进制转换十进制的程序
有两种计算方法,运行的结果是完全相同的:
一是采用位运算的方法:
#include
intmain()
{intn,i;
scanf("%d",&n);
for(i=31;i>=0;i--)
printf("%d",(n&(1
return0;
}
二是采用楼主指定的方法:
#include
inta[32];
intmain()
{intn,i,k=0;
scanf("%d",&n);
if(n
for(i=31;n;i--)
{a[i]=n%2;
n/=2;
}
if(k==1)
{for(i=31;i>=0;i--)
a[i]=1+a[i];
for(i=31;a[i];i--)
a[i]=0;
a[i]=1;
}
for(i=0;i
printf("%d",a[i]);
return0;
}
三、C语言如何将一个8位二进制的数转换为十进制数
我就懒得敲了,转一个网友的回答:
从最低位(最右)算起,位上的数字乘以本位的权重,权重就是2的第几位的位数减一次方。比如第2位就是2的(2-1次)方,就是2;第8位就是2的(8-1)次方是128。把所有的值加起来。
2(1-1)代表2的0次方,就是1;其他类推
比如二进制1101,换算成十进制就是:1*2(1-1)+0*2(2-1)+1*2(3-1)+1*2(4-1)=1+0+4+8=13