什么是BCD码?
BCD码以四位二进制数视作一个十进制位
【例】BCD码0011 0100(二进制)、34H(十六进制)表示34(十进制)
BCD码的加法
BCD码修正规则如下:
(1) 若两个8421码数相加之和等于或小于1001,不需修正。
(2) 若相加和在10-15之间,一方面应向高位产生进位,本身还要进行加6修正,进位是在加6修正时产生的。
(3) 若相加之和在16-18之间,向高位进位会在相加过程中自己产生,对本位还要进行加6修正。
为什么进行+6修正:
二进制直接相加,其进制实际上为16,而BCD码的实际进制为10。因此在本位结果超过10的时候,进行+6修正,以恢复10进制。
【例题】BCD码:9H + 3H = 12H
9H(0101)+ 3H(0011)
= CH(1100)// 二进制加法,本位的值变为 12
=18H(0001 0010)// 对本位进行 +6 修正,向高位进 1,本位变为 2
BCD码的减法
BCD码进行减法的步骤(补码算法):
①求减数的补码,如果是两位,则:补码 = 100 - 减数。这里的100,用2位的BCD码可以表示为9AH(1001 1010)。
②利用BCD码加法的运算法则,结果 = 被减数 + 减数的补码。
③若结果有向高处的进位1,则忽略。
【例题】BCD码:87H - 34H = 53H
9AH - 34 H = 66H (0110 0110)// 求减数的补码
87H + 66H = EDH (1110 1101)// 被减数 + 减数 (未修正)
EDH = 153H (0001 0101 0011)// 修正,忽略高位 1,则结果为 53
参考资料
https://blog.csdn.net/baidu_33836580/article/details/50578436