在日常生產(chǎn)生活中用的最多的數(shù)字是十進(jìn)制數(shù)字,而單片機(jī)系統(tǒng)的所有數(shù)據(jù)本質(zhì)上都是二進(jìn)制的,所以聰明的前輩們就給我們創(chuàng)造了 BCD 碼。
BCD 碼(Binary-Coded Decimal)亦稱二進(jìn)碼十進(jìn)制數(shù)或二-十進(jìn)制代碼。用4位二進(jìn)制數(shù)來表示1位十進(jìn)制數(shù)中的0~9這10個(gè)數(shù)字。是一種二進(jìn)制的數(shù)字編碼形式,用二進(jìn)制編碼的十進(jìn)制代碼。BCD 碼這種編碼形式利用了四個(gè)位元來儲存一個(gè)十進(jìn)制的數(shù)碼,使二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換得以快捷的進(jìn)行。我們前邊講過十六進(jìn)制和二進(jìn)制本質(zhì)上是一回事,十六進(jìn)制僅僅是二進(jìn)制的一種縮寫形式而已。而十進(jìn)制的一位數(shù)字,從0到9,最大的數(shù)字就是9,再加1就要進(jìn)位,所以用4位二進(jìn)制表示十進(jìn)制,就是從 0b0000 到 0b1001,不存在 0b1010、0b1011、0b1100、0b1101、0b1110、0b1111 這6個(gè)數(shù)字。BCD 碼如果到了 0b1001,再加1的話,數(shù)字就變成 0b00010000 這樣了,相當(dāng)于用了8位的二進(jìn)制數(shù)字表示了2位的十進(jìn)制數(shù)字。
BCD 碼的應(yīng)用還是非常廣泛的,比如我們這節(jié)課要學(xué)的實(shí)時(shí)時(shí)鐘,日期時(shí)間在時(shí)鐘芯片中的存儲格式就是 BCD 碼,當(dāng)我們需要把它記錄的時(shí)間轉(zhuǎn)換成可以直觀顯示的 ASCII 碼時(shí)(比如在液晶上顯示),就可以省去一步由二進(jìn)制的整型數(shù)到 ASCII 的轉(zhuǎn)換過程,而直接取出表示十進(jìn)制1位數(shù)字的4個(gè)二進(jìn)制位然后再加上 0x30 就可組成一個(gè) ASCII 碼字節(jié)了,這樣就會方便的多,在后面的實(shí)際例程中將看到這個(gè)簡單的轉(zhuǎn)換。