这一小节我们讲一下并行进位加法器以及补码加减运算器,听咸鱼学长说并行进位加法器的内容考试要求不高,所以不需要过于深究,但是补码加减运算器是最近新加的考点,所以同学们应该重点关注!!

并行进位加法器

上一小节我们讲了串行进位加法器,像多米诺骨牌一样,低位相加之后像更高位进位,并行进位加法器就在这个基础上,做了改进大家来看一下这个公式

C_{i}依赖于A_i B_i 和上一个C_{i-1},但是C_{i-1}又可以根据C_{i-2}得到,以此类推,我们就可以根据C_0得到每一位C_{i},就像这样

 为了方便书写,我们规定G_i=A_i B_i        P_i=A_i\oplus B_i,这样就可以这样书写

 那这样又有一个弊端,越到后面公式越长,电路就越复杂,所以我们需要适可而止,我们一般将四位并行的加法器包装成一个

补码加减运算器

加法器原理

被加数A和家属B输入到加法器当中,Cin作为低位的进位也会参与运算,Cin是加到A+B的最低位,得到的结果保留右边n位作为相加结果F,如果超过了n位需要向更高位进一,这个最高位产生的进位保存在Cout

  

例如A=1000,B=0111,Cin=0 得到的结果F=1111,Cout=0

A=1000,B=0111,Cin=1,得到的结果F=0000,Cout=1

加法器加减法的实现原理

先输入X和Y,如果是加法运算,Y会进入多路选择器的0,Sub控制加/减法的信号,加法输入0,减法输入1,然后和上面讲的一样,被加数A、加数B和Cin在加法器运算,输出最高位进位Cout和相加结果F;如果是减法运算,Y会走多路选择器1这条路,可以看到有一个非门,所以Y会先进行取反操作,Sub判断到是减法操作,输入1到Cin,然后被加数A、加数B和Cin在加法器运算,得到输出结果和Cout。

这个就是模拟了我们之前讲到的补码的加法运算和减法运算,加法直接按位相加;减法需要转成加法,减数按位取反,末位+1,再进行加法运算

 例1:4bit补码,X=-8,Y=7

[X]补=1000,[Y]补=0111

X+Y=1111B,转成原码十进制就是-1D,是对的

X-Y=1000+(1000+1)=10001,转成原码十进制为1D,很明显结果是错的

如果X和Y都是无符号整数会怎么样?

X=8=1000B ,Y=7=0111

X+Y=1111B=15D,是对的

X-Y=1000+(1000+1)=10001B=1D,是对的

例2:4bit补码,X=3,Y=4

[X]补=0011,[Y]补=0100

X+Y=0111B,转成十进制为7D,是对的

X-Y=0011+(1011+1)=1111B转成十进制原码为-1D,是对的

如果X和Y都是无符号整数会怎么样?

X=0011B,Y=0100B

X+Y=0111B=7D,是对的

X-Y=0011+(1011+1)=1111B=15D,很明显是错的

所以可以看出无符号整数或者有符号整数的运算都可以用加法器操作,但是我们需要学会如何判断溢出,我这里挖个坑,我们下一小节进行学习

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐