如何将c51的8位二进制数转为十进制数(要完整程序)?

如题所述

数码管输入,要的是8位2进制数据,不是16进制

我在做毕业设计,有写二进制到十进制的转换程序
算法是相似的,如果一个数比如127,要转换到二进制。我先除以最高位的权值----2的8次方(64),然后取整得到1,将其存储到一个单元后,左移一位。然后原先的余数除以次高位的权值----2的7次方(32),然后取整得1,左移一位存储的数据。依次类推,可将其转化为二进制。
这是我2进制转10进制的
void BtoD()
{
uchar a1=a0;
float An1=0,An2;
uint i=0,j=4;
for(;i<8;i++) //将2进制的数据转换到一个一维数组中
{
a1=a1&table2[i];
a1=_cror_(a1,i);
c[i]=a1;
a1=a0;
}

An1=c[7]*128+c[6]*64+c[5]*32+c[4]*16+c[3]*8+c[2]*4+c[1]*2+c[0]*1;
An1=(An1/256)*5; //类型转换

for(j;j>0;j--)
{
An2=An1;
table1[j-1]=(int)An2; //转换成四位模拟数字,存储在Table1中
An1-=(int)An2;
An1*=10;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-11
楼上是不是太麻烦了呀
bai=data/100;
shi=data%100/10;
ge=data%10;本回答被网友采纳