回覆列表
-
1 # 鹽荒子孫V
-
2 # 雙方說法是否實施方式
BCD碼分壓縮型和下壓縮型兩種,壓縮型BCD碼:1位BCD碼對應4位二進位制碼,如:1對應為0001,2對應為0010,……8對應為1000,9對應為1001;非壓縮型BCD碼:1位BCD碼對應8位二進位制碼,如:1對應為00000001,2對應為00000010,……8對應為00001000,9對應為00001001;
二進位制編碼的十進位制數,簡稱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碼