数字逻辑|对余三码加法进位后需加3修正的思考

笔者这周开始学习数字逻辑电路设计。在复习过程中,对BCD码中余三码加法,若进位,需加3修正的规则产生了诸多疑惑,归纳记录如下:

  1. 为什么如果产生进位,需要进行加3,而非减3?
  2. 为什么进位后,最高位以外数位上的数字在修正前转换为了8421码的规则?

在进行了思考之后,我得出结论如下:

为什么如果产生进位,需要进行加3而非减3?

余三码是一种对9的自补码,所以在任何情况下,如果加法运算后得到了9的结果,修正前结果都记为1111

e.g.
  1100 9
+ 0011 0
--------
  1111 12 //未修正
- 0011 3  //减三修正
--------
  1100 9 

如果产生了进位,则1111至少再增加了0001。这种情况下,BCD码由1111进位为1 0000(十位)+0 xxxx(个位),表示的真值由9进位为1 0+0 x
这意味着,由于对9自补码的性质,***余三码***会与**其表示的十进制数同步在十进制数10处发生进位,从而使最高位以外数位上的数全部归零。(对于上例,在只讨论进位过程的情况下,个位分别归零为00000)
而归零则意味着余三码
相加余6
的性质,已经无法再用原本的四位二进制码(xxxx)进行描述,必须放到符合原运算规律的五位二进制码代数系统中(x xxxx)进行讨论。
1 0000减三修正后得到1101,已经超出余三码的范围,因此需要将其转换到更高一位上去,即0001 0000(未修正),再对每个数位分别加三,使之转换回余三码0100 0011,这样就可以将其分解,继续在四位二进制码的范围内进行符合原有规则的运算(在原有的代数系统中进行运算)。

为什么进位后,最高位以外数位上的数字在修正前转换为了8421码的规则?

如上所述,因为余三码是对9的自补码,所以十-二进制数和表示的十进制数是正巧同步进位的(在1111/9加1,即十进制10处)。两者除最高位数以外,会同步归零,此时每个数位就进入了8421码的规则(0000表示0),需要通过加3重新成为余三码。但如果就未划分数位的五位二进制数整体来看,理论上是可以视作余三码的,依旧可以通过减去3回归余三码,但这样做会超出余三码的范围(>1100),实际上无法操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值