我們日常生活中習慣于使用十進制數字,所以當我們用高級計算機編程語言編寫程序時也習慣于使用十進制數字。但是計算機、單片機或嵌入式系統等硬件設備只能識別二進制的機器語言,所以當我們用高級程序語言寫好代碼后,需要用各種特定的編譯軟件將高級程序語言(例如C語言)編譯為機器語言,其中的十進制數字就需要編譯為二進制數字。用二進制編碼表示十進制數字被稱為二進制編碼十進制,用英文寫作為Binary Coded Decimal,首字母縮寫后簡寫為BCD,所以也通常被稱為BCD碼。
BCD編碼采用4位二進制數字表示一位十進制數字,十進制數制中0~9共10個數字,但對4位二進制數進行組合可以組合出16種代碼,所以肯定有6種編碼是冗余的。下面分布介紹8421碼、余3碼、2421碼、5211碼和余3循環碼的編碼規則。
8421碼,是最常用的二進制編碼,4位二進制數字中的1都是代表一個固定數值,把每一位的1所代表的十進制數加起來,得到的結果就是這4位二進制數字所代表的十進制數碼。4位數字從左到右每一位的1分別表示8(2的3次冪),4(2的2次冪),2(2的1次冪),1(2的0次冪),所以把這種編碼方式叫做8421碼,下表為十進制數與8421碼的一一對照。
余3碼,是在8421碼的基礎上加十進制數3(二進制數0011)形成的一種無權重碼,因為它的每一個碼都比所對應8421碼多3,所以叫做余3碼,下表為十進制數與余3碼的一一對照。余3碼是一種9的自補代碼,例如0和9,1和8,2和7,3和6,4和5的余3碼的每一位都是嚴格互補的。
2421碼,是一種有權碼(8421碼也是一種有權碼,8421碼從左到右,第1-4位的1代表的權重分別為8、4、2、1),2421碼從左到右,第1-4位的1代表的權重分別為2、4、2、1。將4位2421碼4位數字對應的權重相加即可計算出其所對應的十進制數,下表為十進制數與2421碼的一一對照。2421碼是一種9的自補代碼,例如0和9,1和8,2和7,3和6,4和5的余3碼的每一位都是嚴格互補的。
5211碼,是另一種有權代碼,5211碼從左到右,第1-4位的1代表的權重分別為5、2、1、1,下表為十進制數與5211碼的一一對照。
余3循環碼,是一種權重變化的碼,每一位的1不代表固定的數值,十進制數字0-9,相鄰兩數字對應的相鄰代碼之間只有一位的狀態不同。余3循環碼是在余3碼的基礎上取異或后得到的。求余3循環碼時,從左到右,第一位1與余3碼在同一位,從余3碼的第二位開始與前一位進行異或運算,可求得余3循環碼在該位的值。異或(xor)運算是一個數學邏輯運算,例如:如果x、y兩個變量的值不相同,則異或的結果為1。如果x、y兩個變量的值相同,異或的結果為0。下表為十進制數與余3循環碼的一一對照。
轉載請注明來自夕逆IT,本文標題:《8421碼轉換為2421碼(BCD編碼)》

還沒有評論,來說兩句吧...