複習BCD碼

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組4位二進制碼錶示。
    例1110 把十進制數369.74編成8421 BCD碼。
    解:
      
                      表Z1101 常用BCD編碼表

8421碼
5421碼
2421碼
5211碼
餘3碼
0
0000
0000
0000
0000
0000
1
0001
0001
0001
0001
0100
2
0010
0010
0010
0100
0101
3
0011
0011
0011
0101
0110
4
0100
0100
0100
0111
0111
5
0101
1000
0101
1000
1000
6
0110
1001
0110
1001
1001
7
0111
1010
0111
1100
1010
8
1000
1011
1110
1101
1011
9
1001
1100
1111
1111
1100
8421
5421
2421
5211

  壓縮的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碼。

 
發佈了23 篇原創文章 · 獲贊 2 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章