数码管输入,要的是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;
}
}