十進(jìn)制有權(quán)碼
是指表示一個(gè)十進(jìn)制數(shù)位的4位基2碼的每一位有確定的位權(quán)。
用得最普遍的是8421碼,即4個(gè)基2碼位的權(quán)從高向低分別為8、4、2和1,使用基2碼的0000、0001、…1001這10種組合,分別表示0到9這十個(gè)值。這種編碼的優(yōu)點(diǎn)是這4位基2碼之間滿足二進(jìn)制的規(guī)則,而十進(jìn)制數(shù)位之間則是十進(jìn)制規(guī)則,故稱這種編碼為以二進(jìn)制編碼的十進(jìn)制(Binary Coded Decimal)數(shù),簡(jiǎn)稱BCD碼或二-十進(jìn)制碼。另一個(gè)優(yōu)點(diǎn)是在數(shù)字符的ASCII碼與這種編碼之間的轉(zhuǎn)換方便,即取每個(gè)數(shù)字符的ASCII碼的低4位的值便直接得到該數(shù)字的BCD碼,入/出操作簡(jiǎn)便。在計(jì)算機(jī)內(nèi)實(shí)現(xiàn)BCD碼之間的算術(shù)運(yùn)算要復(fù)雜一些,在某些情況下,需要對(duì)加法運(yùn)算的結(jié)果進(jìn)行修正。修正規(guī)則是:
若兩個(gè)8421碼數(shù)相加之和等于或小于1001,即10進(jìn)制的9,不需要修正;
若相加之和在10到15之間,一方面應(yīng)向高位產(chǎn)生一進(jìn)位,本位還要進(jìn)行加6修正,進(jìn)位是在進(jìn)行加6修正時(shí)產(chǎn)生的;
若相加之和在16和18之間時(shí),向高位的進(jìn)位會(huì)在相加過(guò)程中自己產(chǎn)生,對(duì)本位還需進(jìn)行加6修正。下面給出三種情況下的具體例子。
例如,1+8=9的運(yùn)算結(jié)果是正確的,不必修正。
0 0 0 1
+)1 0 0 0 (1)10+(8)10=(9)10
1 0 0 1
而4+9的結(jié)果就必須用 +6 修正,進(jìn)位是在修正過(guò)程中產(chǎn)生的。
0 1 0 0
+)1 0 0 1 (4)10+(9)10 =(1)10 (3)10
1 1 0 1
+) 0 1 1 0
1 0 0 1 1
而7+9的結(jié)果也必須用 +6 修正,進(jìn)位是在相同加過(guò)程中產(chǎn)生的。
0 1 1 1
+)1 0 0 1 (7)10+(9)10 =(1)10(6)10
1 0 0 0 0
+) 0 1 1 0
1 0 1 1 0
另外幾種有權(quán)碼,如2421、5211、84-2-1、4311碼(表2.9),也都是用4位有權(quán)基2碼表示一個(gè)十進(jìn)制數(shù)位,但這4位基2碼之間并不符合二進(jìn)制規(guī)則。這幾種有權(quán)碼的特性表現(xiàn)為:
當(dāng)采用2421、5211和4311編碼時(shí),任何兩個(gè)十進(jìn)制數(shù)位相加產(chǎn)生10或大于10的結(jié)果,相應(yīng)的基2碼相加會(huì)向高一位產(chǎn)生進(jìn)位,有利于實(shí)現(xiàn)逢十進(jìn)位的計(jì)數(shù)和加法規(guī)則。
任何兩個(gè)相加之和等于9的十進(jìn)制數(shù)位的基2碼,互為反碼,即滿足十進(jìn)制數(shù)按9互補(bǔ)(9's Complement)的關(guān)系,有利于簡(jiǎn)化減法處理。表2.9給出的是上面提到的十進(jìn)制數(shù)位的編碼方案。
表2.9 四位有權(quán)碼
十進(jìn)制數(shù) |
8421碼 |
2421碼 |
5211碼 |
840201碼 |
4311碼 |
評(píng)論