十進位制與BCD碼轉換的演算法

2021-08-22 08:23:32 字數 683 閱讀 2978

手頭上在做的專案需要用到ds1302實時時鐘,ds1302讀出來的資料是bcd碼,需要轉換,寫入也是。

bcd是指用二進位制來表示十進位制數的編碼,即用4位二進位制來表示一位十進位制數,因此4位二進位制數表示最大的十進位制數9(1001),只取十六個數中的十個數。

比如:

bcd碼:0x99(153),該bcd碼轉換成十進位制是99.

十進位制是逢十進一,而十六進製制是逢十六進一,它們之間的每次進製差

6 6

,所以乙個十進位制數要轉換成bcd碼,要先算清多進製的位數,比如,十進位制

99' role="presentation">99

99進製了99/

10=9 99/10

=9

次,每次進製和十六進製制進製相比差

6 6

,所以一共差了9×

6=54' role="presentation">9×6

=549×

6=54,即99+

54=153 99+54

=153

(bcd)。bcd碼轉化成十進位製碼也一樣。

static uint8_t bcd2dec(uint8_t bcd)  

static uint8_t dec2bcd(uint8_t dec)

BCD碼與十進位制數間轉換

1.bcd碼 bcd碼 binary coded decimal 稱為二進碼十進數或二 十進位制 用4位二進位制數來表示1位十進位制數中的0 9這10個數碼。bcd碼可分為有權碼和無權碼兩類 有權bcd碼有8421碼 2421碼 5421碼,其中8421碼是最常用的bcd碼。無權bcd碼有餘3碼,餘...

BCD碼與十進位制數間轉換

1.bcd碼 bcd碼 binary coded decimal 稱為二進碼十進數或二 十進位制 用4位二進位制數來表示1位十進位制數中的0 9這10個數碼。bcd碼可分為有權碼和無權碼兩類 有權bcd碼有8421碼 2421碼 5421碼,其中8421碼是最常用的bcd碼。無權bcd碼有餘3碼,餘...

BCD碼與十進位制轉化

bcd碼 binary coded decimal 用4位二進位制數來表示1位十進位制數中的0 9這10個數碼,是一種二進位制的數字編碼形式,用二進位制編碼的十進位制 bcd碼這種編碼形式利用了四個位元來儲存乙個十進位制的數碼,使二進位制和十進位制之間的轉化得以快捷的進行。bcd碼可分為有權碼和無權...