BCD码与十进制之间的转换

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

BCD表示法是用4个二进制来表示一个十进制,也就是一个字节能够表示2个十进制数

在CMOS里的时间存放格式就是BCD码格式

BCD转换为十进制

一个字节的BCD码

| high                  |           low        |
+----+---+---+---+---+---+---+---+
|    7 |  6 | 5 |   4 |  3 |  2 | 1  | 0 |
+----+---+---+---+---+---+---+---+

低4位表示一个数,高4为表示一个数
想要把BCD码转换成十进制数,只要把低4位和高4位分别转换然后加起来就行了

bcd & 0x0f --> 取一个字节的低4位, 表示个位数
(bcd >> 4) * 10 --> 取一个字节的高4位, 乘上10, 表示十位数

使用一个宏来表示BCD的转换为十进制

#define BCD_TO_DEC(bcd) (bcd = ((bcd & 0x0f) + (bcd >> 4) * 10))

同理

十进制转换为BCD

#define DEC_TO_BCD(bdc) (bcd = ((bcd / 10) << 4) + (bcd) % 10)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值