8421BCD碼

標籤: 暫無標籤

180

更新時間: 2013-09-03

廣告

計算機內毫無例外地都使用二進位數進行運算,但通常採用8進位和十六進位的形式讀寫。對於計算機技術專業人員,要理解這些數的含義是沒問題,但對非專業人員卻不那麼容易的。由於日常生活中,人們最熟悉的數制是十進位,因此專門規定了一種二進位的十進位碼,稱為BCD碼,它是一種以二進位表示的十進位數碼。

廣告

  
一、8421BCD碼

  二進位編碼的十進位數,簡稱BCD碼(Binarycoded Decimal). 這種方法是用4位二進位碼的組合代表十進位數的0,1,2,3,4,5,6 ,7,8,9 十個數符。4位二進位數碼有16種組合,原則上可任選其中的10種作為代碼,分別代表十進位中的0,1,2,3,4,5,6,7,8,9 這十個數符。最常用的BCD碼稱為8421BCD碼,8.4.2.1 分別是4位二進數的位取值。 右圖為十進位數和8421BCD編碼的對應關係表:

  1、BCD碼與十進位數的轉換

  BCD碼與十進位數的轉換.關係直觀,相互轉換也很簡單,將十進位數75.4轉換為BCD碼如:

  75.4=(0111 0101.0100)BCD 若將BCD碼1000 0101.0101轉換為十進位數如: (1000 0101.0101)BCD=85.5

  注意:同一個8位二進位代碼表示的數,當認為它表示的是二進位數和認為它表示的是二進位編碼的十進位數時,數值是不相同的。

  例如:00011000,當把它視為二進位數時,其值為24;但作為2位BCD碼時, 其值為18。

  又例如00011100,如將其視為二進位數,其值為28,但不能當成BCD碼,因為在8421BCD碼中,它是個非法編碼 .

  2、BCD碼的格式

  計算機中的BCD碼,經常使用的有兩種格式,即分離BCD碼,組合BCD碼。

  所謂分離BCD碼,即用一個位元組的低四位編碼表示十進位數的一位,例如數82的存放格式為:

  _ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示無關值。

  組合BCD碼,是將兩位十進位數,存放在一個位元組中,例82的存放格式是1000 0010

  3、BCD碼的加減運算

  由於編碼是將每個十進位數用一組4位二進位數來表示,因此,若將這種BCD碼直接交計算機去運算,由於

  計算機總是把數當作二進位數來運算,所以結果可能會出錯。例:用BCD碼求38+49。

  解決的辦法是對二進位加法運算的結果採用"加6修正,這種修正稱為BCD調整。即將二進位加法運算的結果修正為BCD碼加法運算的結果,兩個兩位BCD數相加時,對二進位加法運算結果採用修正規則進行修正。修正規則:

  (1)如果任何兩個對應位BCD數相加的結果向高一位無進位,若得到的結果小於或等於9,則該不需修正;若得到的結果大於9且小於16時,該位進行加6修正。

  (2)如果任何兩個對應位BCD數相加的結果向高一位有進位時(即結果大於或等於16),該位進行加6修正.

  (3)低位修正結果使高位大於9時,高位進行加6修正。

  下面通過例題驗證上述規則的正確性。

  用BCD碼求35+21 BCD碼求25+37 用BCD碼求38+49 用BCD碼求42+95

  用BCD碼求91+83 用BCD碼求94+7 用BCD碼求76+45

  兩個組合BCD碼進行減法運算時,當低位向高位有借位時,由於"借一作十六"與"借一作十"的差別,將比正確的結果多6,所以有借位時,可採用"減6修正法"來修正.兩個BCD碼進行加減時,先按二進位加減指令進行運算,再對結果用BCD調整指令進行調整,就可得到正確的十進位運算結果。 實際上,計算機中既有組合BCD數的調整指令,也有分離BCD數的調整指令。另外,BCD碼的加減運算,也可以在運算前由程序先變換成二進位數,然後由計算機對二進位數運算處理,運算以後再將二進位數結果由程序轉換為BCD碼。

  4、8421BCD碼、餘3碼、格雷碼

  用四位二進位代碼來表示一位十進位數,稱為二--十進位編碼,簡稱BCD(Binary Coded Decimal)碼。根據代碼的每一位是否有權值BCD碼可分為有權碼和無權碼兩類,應用最多的是8421BCD碼,無權碼用得較多的是餘三碼和格雷碼,我們通常所說的BCD碼指的是8421BCD碼。這些編碼跟十進位數對應的關係如下:

  十進位數 8421BCD碼 餘3碼 格雷碼

  0 0000 0011 0000

  1 0001 0100 0001

  2 0010 0101 0011

  3 0011 0110 0010

  4 0100 0111 0110

  5 0101 1000 1110

  6 0110 1001 1010

  7 0111 1010 1000

  8 1000 1011 1100

  9 1001 1100 0100

  8421BCD碼中的「8421」表示從高到低各位二進位位對應的權值分別為8、4、2、1,將各二進位位與權值相乘,並將乘積相加就得相應的十進位數。例如,8421BCD碼「0111」,0×8+1×4+1×2+1×1=7D,其中D表示十進位(Decimal)數。

  值得特別注意的是,8421BCD碼只有0000~1001共十個,而1010、1011...等等不是8421BCD碼!!

  餘三碼是在8421BCD碼的基礎上,把每個數的代碼加上0011(對應十進位數3)后得到的。格雷碼的編碼規則是相鄰的兩代碼之間只有一位二進位位不同。不管是8421BCD碼還是餘三碼還是格雷碼,總是4個二進位位對應一個十進位數,如十進位數18對應的8421BCD碼就是0001 1000。

  壓縮的BCD碼用4個二進位位來表示十進位數,上面提到的就是壓縮的BCD碼。而非壓縮BCD碼用一個位元組(八個二進位位)表示一位十進位數,高4位總是0000,低4位的0000~1001表示相應的十進位數。例如,十進位數87D,採用非壓縮8421BCD碼錶示為二進位數是00001000 00000111B。這種非壓縮BCD碼主要用於非數值計算的應用領域中。

1 8421BCD碼 -二、ASCII碼

  ASCII碼是美國國家信息交換標準字元碼(American Standard Code for Information Interchange )的字頭縮碼。早期的ASCII碼採用7位二進位代碼對字元進行編碼。它包括32個通用控制字元,10個阿拉伯數字,52個英文大,小字母,34個專用符號共128個。7位ASCII代碼在最高位添加一個「0」組成8位代碼,正好佔一個位元組,在存儲和傳輸信息中,最高位常作為奇偶校驗位使用。擴展ASCII碼,即第八位不再視為校驗位而是當作編碼位使用。擴展 ASCII碼有256個。

廣告