请问这个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=bcd>>4;先取bcd码的高位,因为整个BCD码表示数不会超过99,所以定义成uchar就完全可以了。 return(Decimal=Decimal*10+(bcd&=0x0F)),就是高位乘10加上原来数的低位,这就转成10进制数了。追问

请问这个意思是这时在等号右边的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进制数字。可是,这种混合表示法容易令人混淆,因此需要一些字首、字尾或下标来显示。

参考技术A

8421bcd码转换十进制是多少?

是与原数等值的数字。

以上是关于请问这个C51中的这个函数可以把BCD码转换成十进制,具体原理是怎么执行的呀的主要内容,如果未能解决你的问题,请参考以下文章

16位二进制数怎么转换为BCD码

十进制数如何换算成8421BCD码

BCD码怎么转换成标准二进制形式?

8421BCD码怎样转换成十进制

2进制数和BCD码啥转换?举个例子。真诚感谢。

8421bcd码转换十进制怎么换?