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)