使用原因

  • 精度限制
  • 转换成本高

image.png

加法溢出判定

加法

  1. 如果产生了进位1加0110
  2. 如果没产生进位,但是大于9了,产生进位

image.png
总是加上6
0101+1001 = 1110 【14】(BCD码中无法得到14) + 0110 = 0100
10进位和16进位刚好差一个6,所以补上6即可

25 + 39 = 64
需要额外增加 0110 原因是产生了进位。虽然表面上没有直接的1进位产生。但是,是用10进制的形式来进行计算,此时1110已经大于10了,所以产生了进位

减法

image.png

0000 直接反转 得到 1111 = 15 -$x$
但实际上需要得到$9-x$
所以

  1. 按位反转,得到 $15-x$,添加1010 得到$25-x$,又因为最大值为16所以会自动减16 得到$9-x$
  2. 添加0110,得到 $x+6$,再按位反转,得到$15-(x+6) = 9-x$
    image.png