淺談BCD碼--數在計算機中的表示方法及編碼

  今天上午,米老師給我們淺析了BCD碼,那麼什麼是BCD碼呢,接下來我把自己的認識和網上的資料整理分享給大家。

  BCD碼(Binary-Coded Decimal?)亦稱二進碼十進數或二-十進制代碼。用4位二進制數來表示1位十進制數中的0~9這10個數碼。是一種二進制的數字編碼形式,用二進制編碼的十進制代碼。BCD碼這種編碼形式利用了四個位元來儲存一個十進制的數碼,使二進制和十進制之間的轉換得以快捷的進行。

什麼是BCD碼

  BCD碼也叫8421碼就是將十進制的數以8421的形式展開成二進制,大家知道十進制是0~9十個數組成,這十個數每個數都有自己的8421碼:
  0=0000 1=0001 2=0010 3=0011 4=0100 5=0101 6=0110 7=0111 8=1000 9=1001

例子:
  321的8421碼就是
  3 2 1
  0011 0010 0001
因爲: 0 0 1 1 =8x0+4x0+1x2+1x1 =3
   0 0 1 0 =8x0+4x0+2x1+1x0 =2.
   0 0 0 1 =8x0+4x0+2x0+1x1 =1
具體:
  BCD碼是四位二進制碼, 也就是將十進制的數字轉化爲二進制, 但是和普通的轉化有一點不同, 每一個十進制的數字0-9都對應着一個四位的二進制碼,對應關係如下: 十進制0 對應 二進制0000 ;十進制1 對應二進制0001 ....... 9 1001 接下來的10就有兩個上述的碼來表示,BCD碼是遇見1001就產生進位,進位產生在這組四位二進制碼的前面一組 也就是說 10 表示爲00010000,不像普通的二進制碼,到1111才產生進位10000,這是BCD碼與二進制的表示不同的地方。

BCD碼的運算法則
  BCD碼的運算規則:BCD碼是十進制數,而運算器對數據做加減運算時,都是按二進制運算規則進行處理的。這樣,當將 BCD碼傳送給運算器進行運算時,其結果需要修正。修正的規則是:當兩個BCD碼相加,如果和等於或小於 1001(即十進制數 9),不需要修正;如果相加之和在 1010 到1111(十六進制數 0AH~0FH)之間,則需加 6 進行修正;如果相加時,本位產生了進位,也需加 6 進行修正。這樣做的原因是,機器按二進制相加,所以 4 位二進制數相加時,是按“逢十六進一”的原則進行運算的,而實質上是 2 個十進制數相加,應該按“逢十進一”的原則相加,16 與10相差 6,所以當和超過 9或有進位時,都要加 6 進行修正。

  “加6修正,稱爲BCD調整。即將二進制加法運算的結果修正爲BCD碼加法運算的結果,兩個兩位BCD數相加時,對二進制加法運算結果採用修正規則進行修正。修正規則具體爲:
(1)如果任何兩個對應位BCD數相加的結果向高一位無進位,若得到的結果小於或等於9,則該不需修正;若得到的結果大於9且小於  16時,該位進行加6修正。
(2)如果任何兩個對應位BCD數相加的結果向高一位有進位時(即結果大於或等於16),該位進行加6修正.
(3)低位修正結果使高位大於9時,高位進行加6修正。 ”

下面舉例說明。
例子: 需要修正 BCD碼運算值的舉例。
   (1) 計算 5+8;(2) 計算 8+8
   解:(1) 將 5 和 8 以 8421 BCD輸入機器,則運算如下:
   0 1 0 1
   +) 1 0 0 0
   1 1 0 1 ( 結果大於 9)
   +) 0 1 1 0 (加 6 修正)
  1 0 0 1 1 ( 即13 的 BCD碼)
  結果是 0011,即十進制數 3,還產生了進位。5+8=13,結論正確。
   (2)將8以8421 BCD輸入機器,則運算如下:
   1 0 0 0

+)1 0 0 0
   1 0 0 0 0 (結果大於9)
  +)0 1 1 0 (加6修正)
  1 0 1 1 0 (16的BCD碼)
  結果是0110,即十進制的6,而且產生進位。8+8=16,結論正確。

BCD碼與十進制數的轉換

  關係直觀,相互轉換也很簡單,

將十進制數75.4轉換爲BCD碼如: 75.4=(0111 (0101.0100)BCD

將BCD碼1000 0101.0101轉換爲十進制數如: (1000 0101.0101)BCD=85.5

特別注意 : 同一個8位二進制代碼表示的數,當認爲它表示的是二進制數和認爲它表示的是二進制編碼的十進制數時,數值是不相同的,這也是上文提到的BCD碼與二進制的表示不同的地方。
例如:00011000,當把它視爲二進制數時,其值爲24;但作爲2位BCD碼時, 其值爲18。

(部分內容來自百度百科http://baike.baidu.com/view/45179.htm?fr=ala0_1_1

12/10/05 15:30 於機房

 

 

歡迎訪 問我的博客http://151451325.blog.163.com http://blog.sina.com.cn/tonyliuchen

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章