BCD 碼的英文是 Binary Code Decimal ,用縮寫 BCD 表 示。二-十進制編碼,是用二進制碼表示十進制碼,也稱 BCD 碼。用二進制碼錶示十進制碼,如果用三位二進制碼只有八個狀態,是不夠的。至少需要四位,因爲四位二進制碼有十六個狀態,捨去其中的六個,即可構成許多許多種 BCD 碼。只有有特色的幾種得到了應用。
在一些數字系統中,如電子計算機和數字式儀器中,往往採用二進制碼錶示十進制數。通常,把用一組四位二進制碼來表示一位十進制數的編碼方法稱作二─十進制碼,亦稱BCD碼(Binary Code Decimal)。
4位二進制碼共有16種組合,可從中任取10種組合來表示0~9這10個數。根據不同的選取方法,可以編制出很多種BCD碼,如8421碼,5421碼,2421碼,5211碼和餘3碼。表Z1101列出了這幾種BCD碼,其中的8421 BCD碼最爲常用。
由於每一組4位二進制碼只代表一位十進制數,因而n位十進制數就得用n組4位二進制碼錶示。
例1110 把十進制數369.74編成8421 BCD碼。
解:
表Z1101 常用BCD編碼表
|
壓縮的BCD碼:
壓縮的BCD碼用4位二進制數表示一個十進制數位,整個十進制數用一串BCD碼來表示。例如,十進制數59表示成壓縮的BCD碼爲0101 1001,十進制數1946表示成壓縮的BCD碼爲0001 1001 0100 0110。
非壓縮的BCD碼:
非壓縮的BCD碼用8位二進制數表示一個十進制數位,其中低4位是BCD碼,高4位是0。例如,十進制數78表示成壓縮的BCD碼爲0000 0111 0000 1000。
從鍵盤輸入數據時,計算機接收的是ASCII碼,要將ASCII碼錶示的數轉換成BCD碼是很簡單的,只要把ASCII碼的高4位清零即可。
ASCII和BCD碼
十進制數字 ASCII碼 壓縮BCD碼 非壓縮BCD碼
0 0011 0000 0000 0000 0000
1 0011 0001 0001 0000 0001
2 0011 0010 0010 0000 0010
3 0011 0011 0011 0000 0011
4 0011 0100 0100 0000 0100
5 0011 0101 0101 0000 0101
6 0011 0110 0110 0000 0110
7 0011 0111 0111 0000 0111
8 0011 1000 1000 0000 1000
9 0011 1001 1001 0000 1001
void BcdToAscii (char *ascii_buf, const BYTE *bcd_buf, int len)
{
int i;
char ch;
for (i=0; i<len; i++)
{
if (i & 1) ch = *(bcd_buf++) & 0x0f;
else ch = *bcd_buf >> 4;
ascii_buf[i] = ch + ((ch > 9)? 'A'-10 : '0');
}
}
一個BCD碼佔4位,而一個字節有8位。若把二個BCD碼放在一個字節中,就叫壓縮的BCD碼。而一個字節只放一個BCD碼,高位置0,則叫非壓縮的BCD碼。