如何將BCD碼轉(zhuǎn)換成10進(jìn)制碼
今天有人在問我BCD碼如何轉(zhuǎn)換成10進(jìn)制碼的問題,其實很簡單
BCD 的表示法是 用4個二進(jìn)制位來表示 一個十進(jìn)制位,也就是一個字節(jié)能夠表示2個十進(jìn)制數(shù)位,這是一種壓縮的十進(jìn)制表示方式,應(yīng)用很廣,最常見的就是CMOS里的時間存放格式就是BCD碼格式,更具體的表示方法大家可以去百度一下就知道了不過其實知道我上面說的就差不多了。
明白了BCD是怎么表示后轉(zhuǎn)換也就容易了,低4位和高4位分別轉(zhuǎn)換然后合并起來就是了!
如15用BCD碼表示為 0001 0101
低四位的值就是實現(xiàn)十進(jìn)制數(shù)的低四,高4位就是高四位的值,這樣我們有很高效的轉(zhuǎn)換方法:低四位+高四位×10 (上面是2位十進(jìn)制數(shù)的)
用C語言表達(dá)一下可能更能明白我上面說的意思
#include
int main(void)
{
/** 15用BCD碼表示為 0001 0101 **/
int bcd = 0x15;
int dec;
dec = (bcd & 15) + ((bcd>>4) * 10);
printf("%dn",dec);
return 0;
}
所以實際轉(zhuǎn)換可以定義成一個宏
#define BCDTODEC(bcd)
如
#include
#define BCDTODEC(bcd) ((bcd) = ((bcd) & 15) + ((bcd)>>4) * 10)
int main(void)
{
/** 15用BCD碼表示為 0001 0101 **/
int bcd = 0x15;
BCDTODEC(bcd);
printf("%dn",bcd);
return 0;
}