十進制與BCD碼轉換的算法
BCD碼
BCD是指用二進制來表示十進制數的編碼,即用4位二進制來表示一位十進制數,因此4位二進制數表示最大的十進制數9(1001),只取十六個數中的十個數。
比如:
BCD碼:0x99(153),該BCD碼轉換成十進制是99.
算法原理
十進制是逢十進一,而十六進制是逢十六進一,它們之間的每次進位差66,所以一個十進制數要轉換成BCD碼,要先算清多進位的位數,比如,十進制9999進位了99/10=999/10=9次,每次進位和十六進制進位相比差66,所以一共差了9×6=549×6=54,即99+54=15399+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);`
}