美文网首页
十进制与BCD码转换的算法

十进制与BCD码转换的算法

作者: guanjianhe | 来源:发表于2018-02-05 23:00 被阅读0次

手头上在做的项目需要用到ds1302实时时钟,ds1302读出来的数据是BCD码,需要转换,写入也是。

BCD码

BCD是指用二进制来表示十进制数的编码,即用4位二进制来表示一位十进制数,因此4位二进制数表示最大的十进制数9(1001),只取十六个数中的十个数。

比如:

BCD码:0x99(153),该BCD码转换成十进制是99.

算法原理

十进制是逢十进一,而十六进制是逢十六进一,它们之间的每次进位差6,所以一个十进制数要转换成BCD码,要先算清多进位的位数,比如,十进制99进位了99/10=9次,每次进位和十六进制进位相比差6,所以一共差了9×6=54,即99+54=153(BCD)。BCD码转化成十进制码也一样。

代码

static uint8_t BCD2DEC(uint8_t bcd)  
{  
    return (bcd-(bcd>>4)*6);
}  

static uint8_t DEC2BCD(uint8_t dec)  
{  
    return (dec+(dec/10)*6);
} 

相关文章

  • 十进制与BCD码转换的算法

    手头上在做的项目需要用到ds1302实时时钟,ds1302读出来的数据是BCD码,需要转换,写入也是。 BCD码 ...

  • 编码总结

    1. BCD码 BCD码:也叫做二一十进制编码(binary coded decimal),几种常见的BCD码有8...

  • 二进制转8421BCD码的算法

    1. BCD码的求和 BCD码使用4位二进制数来表示十进制中0~9这10个数的数码。例如,十进制的237,其BCD...

  • 2019-04-20 BCD 编码概念

    在BCD是寄生在二进制码中的,BCD码是二进制码的子集,比如说 BCD码的56,实际上是0x56(计算机中的十进制...

  • verilog检测闰年

    算法:输入十进制四位年份的BCD二进制码,共16位,表示为ABCD。闰年包含以下几种情况能被400整除:CD全为0...

  • 3.9 嵌入式

    上午对ADC的知识和计算器程序进行复习回顾. 下午继续完成之前的万年历显示,把bcd码转换成十进制数,然后在逐位触...

  • 二.进制转换

    进制转换 二进制与十进制 算法:例子1 例子2: 0.1(10进制)无法转化为(2二进制)因为0.1在十进制是有限...

  • 数制与码制

    [toc] 数制与码制 本章的重点是BCD代码。难点是数制及其相互转换。 本章要求学生掌握数制和编码的基本运算。 ...

  • 格雷码与十进制码的转换

    没有用php的位运算,效率会低些,算是完整的反映了转换规则, 基本上就是:格雷码 转成 二进制码 转成 十进制码 ...

  • iOS BCD编码

    BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是...

网友评论

      本文标题:十进制与BCD码转换的算法

      本文链接:https://www.haomeiwen.com/subject/txhwzxtx.html