跳至內容

二進碼十進數

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

二進碼十進數(英語:Binary-Coded Decimal,簡稱BCD中國大陸BCD碼二-十進制編碼)是一種十進制數字編碼的形式。在這種編碼下,每個十進制數字用一串單獨的二進制位元來儲存與表示。常見的有以4位元表示1個十進制數字,稱為壓縮的BCD碼(compressed or packed);或者以8位元表示1個十進制數字,稱為未壓縮的BCD碼(uncompressed or zoned)。

這種編碼技術,最常用於會計系統的設計裡,因為會計制度經常需要對很長的數字做準確的計算。相對於一般的浮點式記數法,採用BCD碼,既可儲存數值的精確度,又可使電腦免除作浮點運算所耗費的時間。此外,對於其他需要高精確度的計算,BCD編碼亦很常用。

BCD碼的主要優點是在機器格式與人可讀的格式之間轉換容易,以及十進制數值的高精度表示。BCD碼的主要缺點是增加了實現算術運算的電路的複雜度,以及儲存效率低。

常用BCD編碼方式

對應不同需求,各人亦開發了不同的編碼方法,以適應不同的需求。這些編碼,大致可以分成有權碼無權碼兩種:

  1. 有權碼,如:8421(最常用)、2421、5421
  2. 無權碼,如:餘3碼、格雷碼

8421碼

8421碼又稱為BCD碼,是十進制代碼中最常用的一種。[1]在這種編碼方式中,每一位二值代碼的「1」都代表一個固定數值。將每位「1」所代表的十進制數加起來就可以得到它所代表的十進制數位。因為代碼中從左至右看每一位「1」分別代表數字「8」「4」「2」「1」,故得名8421碼。其中每一位「1」代表的十進制數稱為這一位的權。因為每位的權都是固定不變的,所以8421碼是恆權碼。

餘3碼

餘3碼是由8421碼加上0011形成的一種無權碼,由於它的每個字元編碼比相應8421碼多3,故稱餘3碼。例如,十進制字元5的餘3碼等於5的8421碼0101加上0011,即為1000。同樣,餘3碼中也有6種狀態0000,0001,0010,1101,1110和1111是不允許出現的。 餘3碼也是一種對9的自補代碼,因而可給運算帶來方便。其次,在將兩個餘3碼表示的十進制數相加時,能正確產生進位訊號,但對「和」必須修正。修正的方法是:如果有進位,則結果加3;如果無進位,則結果減3。 餘3碼與十進制之間的轉換也是按位元進行的,值得注意的是每位十進制數的編碼都應餘3。

2421碼

2421碼是一種有權碼,權值由高到低分別為2、4、2、1,特點是大於等於5的4位元二進制數中最高位為1,小於5的最高位為0。如5的2421碼表示為1011而不是0101。

比較

以下為三種常見的BCD編碼的比較。

十進數 8421-BCD碼 餘3-BCD碼 2421-A碼
(M10 D C B A C3 C2 C1 C0 a3 a2 a1 a0
0 0 0 0 0 0 0 1 1 0 0 0 0
1 0 0 0 1 0 1 0 0 0 0 0 1
2 0 0 1 0 0 1 0 1 0 0 1 0
3 0 0 1 1 0 1 1 0 0 0 1 1
4 0 1 0 0 0 1 1 1 0 1 0 0
5 0 1 0 1 1 0 0 0 1 0 1 1
6 0 1 1 0 1 0 0 1 1 1 0 0
7 0 1 1 1 1 0 1 0 1 1 0 1
8 1 0 0 0 1 0 1 1 1 1 1 0
9 1 0 0 1 1 1 0 0 1 1 1 1

外部連結

BCD-Code頁面存檔備份,存於網際網路檔案館

參考文獻

  1. ^ Evans, David Silvester. Chapter Four: Ancillary Equipment: Output-drive and parity-check relays for digitizers. Digital Data: Their derivation and reduction for analysis and process control 1. London, UK: Hilger & Watts Ltd / Interscience Publishers. 1961-03: 46–64 [56–57] [2020-05-24].  (8+82 pages) (NB. The 4-bit 8421 BCD code with an extra parity bit applied as least significant bit to achieve odd parity of the resulting 5-bit code is also known as Ferranti code.)