请问这个C51中的这个函数可以把BCD码转换成十进制,具体原理是怎么执行的呀
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问这个C51中的这个函数可以把BCD码转换成十进制,具体原理是怎么执行的呀相关的知识,希望对你有一定的参考价值。
uchar
BCD_Decimal(uchar bcd)//BCD 码转十进制函数,输入 BCD,返回十进制
uchar Decimal;
Decimal=bcd>>4;
return(Decimal=Decimal*10+(bcd&=0x0F));
比如一个BCD码为0101 1001 (59), Decimal先得到bcd右移后的值为1001 0101,然后怎么就我想应该是把十位的数乘十再加上个位的值就可以得到十进制数了, 但是这个我觉得有点问题好像是不是Decimal应该定义成int类型才能转换。
请问这个意思是这时在等号右边的Decimal还是为二进制,是因为乘以了十然后就转换为十进制了吗。
追答请注意,原来表示的是0x59,所以取出高4位乘以10加上低4位,这样就变成了10进制的59。
参考技术A Decimal先得到bcd右移后的值为0000 0101 ,不是循环右移bcd&=0x0F bcd= 0000 1001追问
也就是说*10这个行为代表的十进制之间的运算,如果有二进制之间进行十进制之间的运算得到的结果是十进制,Decimal=Decimal*10+(bcd&=0x0F),像这里等号右边的Decimal还是为二进制,由于乘以了10所以为十进制了,是吗。
8421bcd码转换十进制是多少?
138550221
8421BCD是采用十六进制码来表示十进制数值,高位到低位的权值分别为8,4,2,1,b,c,d只要将每个十六进制码对应的权值相加即得到对应的十进制数。十六进制的8421BCD码转换成十进制是:97。
十六进制:
通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。例如十进制数57,在二进制写作111001,在16进制写作39。如今的16进制则普遍应用在计算机领域,这是因为将4个位元(Bit)化成单独的16进制数字不太困难。1字节可以表示成2个连续的16进制数字。可是,这种混合表示法容易令人混淆,因此需要一些字首、字尾或下标来显示。
参考技术A8421bcd码转换十进制是多少?
是与原数等值的数字。
以上是关于请问这个C51中的这个函数可以把BCD码转换成十进制,具体原理是怎么执行的呀的主要内容,如果未能解决你的问题,请参考以下文章