8421BCD碼

8421BCD碼

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

BCD碼簡介

二進制編碼的十進制數,簡稱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編碼的對應關系表:

0-----------0000----------0x0

1-----------0001----------0x1

2-----------0010----------0x2

3-----------0011----------0x3

4-----------0100----------0x4

5-----------0101----------0x5

6-----------0110----------0x6

7-----------0111----------0x7

8-----------1000----------0x8

9-----------1001----------0x9

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

BCD碼與十進制數的轉換關系很直觀,相互轉換也很簡單,将十進制數75.4轉換為BCD碼:7->0111,5->0101,4->0100所以拼成8421BCD碼的結果是:(0111 0101.0100)BCD;若将BCD碼1000 0101.0101轉換為十進制數:1000->8,0101->5,0101->5所以結果是:(85.5)D。

注意:同一個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修正。

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

a)用BCD碼求35+21

35-> 0011 0101+

21-> 0010 0001=

0101 0110->56

注意:0101+0001并沒有滿足上述3條規則,同時0011+0010也沒有滿足上述3條規則,所以結果不作處理。

b)BCD碼求25+37

25->0010 0101+

37->0011 0111=

0101 1100+(低位0101+0111=1100->12>9所以需要調整)

06-> 0110=

0110 0010->62

注意:在給低位加0110調整時也有向高位進位發生,但是這是在調整時的進位,故不做處理。

c)用BCD碼求38+49

38->0011 1000+

49->01001001=

1000 0001+(低位1000+1001相加時有進位發生,所以需要給低位加0110->調整)

06-> 0110=

10000111->87

注意調整後的結果也不滿足上述(3)的條件所以不再調整

d)用BCD碼求42+95

42->0100 0010+

95->1001 0101=

11010111->13 7+(1101是一個非法8421BCD碼,事時上0100+1001相加滿足(1)條件)

06->0110(注意是給1001+0100加0110調整)

00010011 0111->1 3 7

注意結果不滿足(3)條件所以不再調整。

c)用BCD碼求91+83

91->1001 0001+

83->1000 0011=

00010001 0100 +(1001+1000有進位發生所以需要給1001+1000相加結果0001+0110調整)

06->0110 =

00010111 0100->174

注意結果不滿足(3)條件所以不再調整。

d)用BCD碼求94+7

94->1001 0100+

07->0000 0111=

10011011+(由于結果的兩位編碼數滿足上述條件1所以需要給0100+0111+0110調整)

06->0110=

1010 0001+(由于結果的高位1010->10>9所以滿足上述(3)條件給高位加0110調整)

06->0110 =

0001 0000 0001->101

注意:對于調整我們隻需要關心結果是不是滿足上述(3)條件,不滿足不予調整。

e)用BCD碼求76+45

76->0111 0110+

45->0100 0101=

1011 1011+(注意這裡0101+1011和0111+0100都滿足上述(1)條件所以需要都調整)

06->01100110=

000100100001->121

注意結果滿足上述(3)條件所以不再調整。(例子補充于2015-1-11)

兩個組合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 0111

6 0110 1001 0101

7 0111 1010 0100

8 1000 1011 1100

9 1001 1100 1101

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碼主要用于非數值計算的應用領域中。

BCD碼解釋

1、所謂的8421BCD編碼就是用4位二進制數字為一組對于數字進行表示,二—十進制表示的是每一個十進制數字0-9都是用四位二進制數字表示的。n2、用4位二進制數字可以表示0-15,但是8421BCD碼隻有0-9十個數字,所以在8421BCD編碼規則中其他的數字是無效的。n3、8421BCD編碼在時鐘、溫度計、計數器中應用比較廣泛;n4、如果一串二進制數字是按照8421BCD規則編碼的,可以從右到左按照四位一組進行計算。

相關詞條

相關搜索

其它詞條