计组第三课

四位二进制加法器
由4个全加器串联构成行波进位加法器
特点:位间进位是串行传送(称为行波进位),即本位全加和FAi必须等低位进位Ci来到后才能得到。
缺点:加法时间与位数有关,位数越大,速度越慢。

补码运算
1、补码加法:X补+Y补=[X+Y]补
2、补码减法:[X-Y]补=X补+[-Y]补=X补-Y补=X补+Y求补

补码运算的特点:
1、使用补码进行加减运算,符号位和数值位一样参与运算
2、补码的减法可以用加法实现,任意两数之差的补码等于被减数的补码与减数相反数的补码之和。

求补运算:
求补运算需要实现的是Y补->[-Y]补的运算。
求补规则:将Y补包括符号位在内的每一位取反后在末位加1。
比如我们计算[5-2]补,可以有两种解法:
第一种是把减法变加法[5+(-2)]补,利用加法的公式,即为5补+(-2)补。
第二种是变为5补+(2)求补。

总之X求补=[X补]全部取反(包括符号位),再加1。

如何硬件实现求反加1?
在异或门的一端输入1或者0决定数据求反

例:已知X=+1011,Y=-0100,用补码计算X+Y和X-Y。
写出补码(五位):
X补=0,1011,Y补=1,1100,[-Y]补=0,0100
因此:
[X+Y]补=01011+11100=0,0111
[X-Y]补=01011+00100=01111

溢出概念和检测方法
溢出:在定点数机器中,数的大小超过了定点数能表示的范围,叫溢出。
上溢出:两个正数相加的结果是负数(由于次高进位为1,导致符号位+1了)
下溢出:两个负数相加的结果是正数(由于次高进位为0,导致两个符号位相加变为0了)

检测方法:双符号位法
将符号位扩展为2位,正数00,负数11。当符号位结果为01时,说明次高位的进位为1,为上溢出;当符号位结果为10时,说明次高进位为0,为下溢出。

符号位为00或11时,未溢出。

比如X=+1011,Y=-0101,则
X补=00 1011,Y补=11 1011,[-Y]补=00 0101
X补+Y补=1,00 0110,符号位为00,未溢出
X补-Y补=01 0000,出现下溢出。

可能发生溢出的情况:同号相加和异号相减。

符号位占两位太浪费,更好的方法是:判断次高进位,两数相加时次高进位要为0,两负相加时次高进位要为1,这样才不会导致溢出。

综合一下,利用进位判别法,判断数据最高位与符号位进位是够相同。

判溢方法总结:
(1)单符号位判溢法(最高有效位产生的进位和符号位产生的进位不同,则溢出)
(2)双符号位判溢法:运算的两位符号不同时,发生溢出。

基本的二进制加法/减法器
行波进位的补码加法/减法器
判断溢出位的延时:(2n+9)T
符号位溢出的延时:(2n+6)T
最高有效位的延时:((n-1)*2+6)T
这个分析很容易,看PPT或者书就好了。

余三码
老师着重讲了余三码相加的案例,老师说若两个余三码相加后产生了溢出,我们要对最后的结果加3;若不产生溢出,我们就对最后的结果减3(加3的补码)。老师对此解释了挺久的,但是感觉班上很多人都没有听懂,其实我觉得,老师只需要讲一句,我们大多数人就能听懂了:“余三码和余三码相加的结果,我们也想把其转化为余三码”。
这时候只需要想一件事情,10进制的溢出是需要本位和超过9的,然而BCD码的本位和溢出是需要达到16的,因此,将两个加数转化为余三码相加,得知其十进制是会溢出的时候(超过9了),我们对结果加上3,相当于加数被加数和结果都比8421BCD的结果多了3,刚好都是余三码了。相减的时候,不溢出,那结果的最高位岂不是白白加了6?对结果-3,正是原BCD码+3,即余三码。
不清楚余三码的意义真正为何,读者可以去搜索,去思考,我仅仅给出一点理解,帮助大家在遇到余三码的相加的问题答对。

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布布要成为最负责的男人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值