版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章运算方法和运算器2§2.2定点加法、减法运算一、补码的加减法运算
1、加法
任意两个数的补码之和,等于该两数和的补码。
[X+Y]补=[X]补+[Y]补
(mod2)
两个数不管正负,均用补码表示,符号位应当做数值参加运算,符号位相加所产生的进位要丢掉,结果为补码。可以证明:[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补[-Y]补的求法:将[Y]补连同符号位求反加1。例:X=1001Y=0101,求X+Y=?
解:[X]补=01001[Y]补=00101[X+Y]补=[X]补+[Y]补=01001+00101=01110例:X=1001Y=-0101,求X+Y=?
解:[X]补=01001[Y]补=11011[X+Y]补=[X]补+[Y]补=01001+11011=00110定点运算器——定点加减法例:X=0.1011Y=-0.0101,求X+Y=?解:[X]补=0.1011[Y]补=1.1011+011010.丢到1[X]补+[Y]补=0.0110X+Y=0.0110定点运算器——定点加减法例:X=-11001,Y=-00011,求X+Y=?解:[X]补=100111[Y]补=111101+001011丢到1
[X]补+[Y]补=100100X+Y=-111000由以上两例看到,补码加法的特点:一是符号位要作为数的一部分一起参加运算。二是要在模2的意义下相加,即超过2的进位要丢掉!定点运算器——定点加减法补码的减法:
[X]补-[Y]补=[X+(-Y)]补=[X]补+[-Y]补(-Y)的补码称为[Y]补的机器负数,由[Y]补求[-Y]补的过程称为将[Y]补“变补”或对[Y]补求补,由[Y]补求[-Y]补的方法是,不管Y的真值为正或为负,都是将[Y]补的各位连同符号位在内全变反后,最低位加1。定点运算器——定点加减法例:X=-0.1011Y=-0.0110,求X-Y=?解:[X]补=1.0101[-Y]补=0.0110+1101
1.[X-Y]补=1.1011X-Y=-0.0101二、溢出及其判别方法:在计算机中,由于机器码的尾数通常是给定的(如16位字长,32位字长),因此,在计算机中数的表示范围是有限的,若两数进行加减运算的结果超出了给定的取值范围,就称为溢出。一旦出现溢出,必须及时处理,否则会出现错误。1、溢出例1:X=1010Y=1001求X+Y解:[X]补=01010+[Y]补=0100110011例2:X=-1010Y=-1011求X+Y解:[X]补=10110+[Y]补=1010101011较大正数相加产生进位,影响符号位较大的负数对应较小的正数补码相加无进位,符号位自己相加2、溢出原因:
1)两个正数太大:产生进位而改变了符号位;
2)两个负数绝对值太大:对应的补码太小,不能向符号位产生进位,使符号位相加后,向前产生进位。1、两异号数相加或两同号数相减是否会产生溢出?2、仅当两同号数相加或两异号数相减时才有可能产生溢出?问题:决不会产生溢出正确例:X=-0.100Y=-0.101,求X+Y=?解:[X]补=1.100[Y]补=1.011+11110.丢到1两负数相加,结果应为负数,但运算结果为正数,表明有溢出发生。数据向前无进位,符号位向前有进位3、溢出的判断
1)采用单符号位的判断方法例:X=100,Y=-110,求X-Y=?解:[X]补=0100[-Y]补=0110+01
1一个正数减去一个负数,结果为正数,但计算结果为负数,表明有溢出发生,出错数据向前有进位,符号位向前无进位0溢出逻辑表达式为:V=Cf⊕C0
(其中Cf为符号位产生的进位,C0为最高有效位产生的进位)溢出的原因:之所以发生错误,是因为运算结果产生了溢出。两个正数相加,结果大于机器所能表示的最大正数,称为上溢。而两个负数相加,结果小于机器所能表示的最小负数,称为下溢。
为了判断“溢出”是否发生,可采用两种检测的方法。第一种方法是采用双符号位法,这称为“变形补码”或“模4补码”。从而可使模2补码所能表示的数的范围扩大一倍。定点运算器——定点加减法2)采用双符号位的判断方法每个操作数的补码符号用两个二进制数表示,称为交形补码,用“00”表示正数,“11”表示负数,左边第一位叫第一符号位,右边第一位称为第二符号位,两个符号位同时参加运算,如果运算结果两符号位相同,则没有溢出发生。如果运算结果两符号位不同,则表明产生了溢出。“10”表示负溢出(下溢出),说明运算结果为负数,“01”表示正溢出(下溢出),说明运算结果为正数。定点运算器——定点加减法采用双符号位的判断方法
高符号位低符号位
结果00正01上溢10下溢11负定点运算器——定点加减法3)利用进位值的判断方法两补码数进行加减运算时,若最高数值位产生向符号的进位而符号位不产生进位时,发生正溢出,若最高数值位无进位而符号位有进位时,发生负溢出。例:X=+0.1100Y=+0.1000,求X+Y=?解:[X]补=00.1100[Y]补=00.1000+01.0100正数太大了,向前有进位,而符号位向前无进位;两个符号位:01,表示溢出例:X=-0.1100Y=-0.1000,求X+Y=?解:[X]补=11.0100[Y]补=11.1000+10.1100负数绝对值太大了对应的补码小,向前无进位,而符号位向前有进位;两个符号位:10,表示溢出溢出逻辑表达式为:V=Sf1⊕Sf2
(其中Sf1为最高符号位,Sf2为第二符号位)由此可以得出如下结论:1.当以模4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。2.模4补码相加的结果,不论溢出与否,最高符号位始终指示正确的符号。三、基本的加法/减法器1、一位半加器两个输出端的逻辑表达式:Si=Ai⊕Bi
Ci+1=AiBi三、基本的加法/减法器2、一位全加器FAAiBiCiCi+1Si向高位进位本位输出结果输入输出AiBiCiSiCi+10000000110010100110110010101011100111111表2.2一位全加器真值表两个输出端的逻辑表达式:Si=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAiSi=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi按此表达式组成的一位全加器示图:Ci+1=(Ai⊕
Bi)Ci
AiBin个1位的全加器(FA)可级联成一个n位的行波进位加减器。M为方式控制输入线,当M=0时,作加法(A+B)运算;当M=1时,作减法(A-B)运算,在后一种情况下,A-B运算转化成[A]补+[-B]补运算,求补过程由B+1来实现。单符号位判溢出双符号正溢出
0.100100.1001+0.110000.11001.010110.0101
负溢出
1.011111.0111+1.0011+11.001110.101010.1010补码加减法的逻辑实现图示:n个1位全加器组成。单符号位判溢出。V=c0⊕
c1
双符号位判溢出。V=Sf1⊕Sf2y0y1V=1cn=0
做加法c0=1
做减法(求反加1)定点运算器——定点乘法定点原码一位乘法设被乘数[X]原=XfXn-1Xn-2……X1X0
乘数[Y]原=YfYn-1Yn-2…Y1Y0
乘积[X]原=ZfZ2n-1Z2n-2……Z1Z0
运算原则:同号相乘为正,异号相乘为负,符号可按:异或运算得到,数值部分的运算方法与普通的十进制乘数相类似。定点运算器——定点乘法手工算法0.11010.1011×
1101
1101
0000
1101+
10001111
0.l
两个n位数相乘,其积为2n位,则需要2n位长的加法器,这不适用于定点机的形式。l
机器一次只能进行两个数的相加,不能进行多个数据的加法。l
手工计算中,乘数的每一位是0还是1都可直接看见,而在计算机中,采用放乘数的寄存器的每一位直接决定本次相加数是被乘数还是0是很不方便的,若采用该寄存器的最低一位来执行这种判断就简便了。定点运算器——定点乘法运算法则:
计算机中执行乘法时,积的符号位由被乘数和乘数的符号位通过一个半加器实现。数值部分的运算规则是:从最低位Y0开始,当乘数Yi为1时,将上次部分积加上被乘数的绝对值,然后右移一位,得到新的部分积;当Yi为0时,则写下全0。然后再对乘数Y的高一位进行类似乘法运算。重复“加—右移”操作N次,可得到最后的乘积。定点运算器——定点乘法例:X=0.1101,Y=0.1011,求X*Y=?
解:|X|=00.1101|Y|=00.1011
部分积乘数说明00.000000.1101+Yf
101100.110100.011000.1101→+01.001100.100100.0000+00.100100.010000.110101.000100.1000→→+→1Yf
10111Yf
10111Yf
11111YfZ0=0Y0=1,+XY2=1,+XY1=0,+0Y0=1,+X右移,得Z1右移,得Z2右移,得Z3右移,得Z4=X*Y定点运算器——定点乘法结果:
计算:X=-0.1101Y=0.0110,用原码阵列乘法器求X*Y?X*Y=0.10001111X*Y=1.010011102.5.1逻辑运算
计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。所谓逻辑数,是指不带符号的二进制数。利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作。计算机中的逻辑运算,主要是指逻辑非、逻辑加、逻辑乘、逻辑异四种基本运算。1.逻辑非运算
逻辑非也称求反。如:
x1=01001011,x2=11110000,求x1,x2。x1=10110100x2=000011112.逻辑加运算按位求它们的“或”x=10100001,y=10011011,求x∨y。
10100001x
∨
10011011y
10111011z3.逻辑乘运算按位求它们的“与”
x=10111001,y=11110011,求x∧y。
10111001x
∧
11110011y
10110001z4.逻辑异运算按位求它们的模2和x=10101011,y=11001100,求x⊕y。[解:]
10101011x
⊕
11001100y
01100111z即x⊕y=01100111定点运算器的组成运算器主要由算术逻辑部件,通用寄存器和状态寄存器组成。算术逻辑部件ALU(ArithmeticandLogicUnit):主要完成对二进制信息的定点运算,如:加、减、乘、除、与、或、非、异或、逻辑移位、算术移位等。通用寄存器:主要用来保存参加运算的操作数和运算的结果。状态寄存器:用来记录算术、逻辑运算或测试操作的状态结果。一般有零标志位,负标志位,溢出标志位、进位或借位标志位等。定点运算器的组成——多功能算术/逻辑运算单元基本思想
一位全加器(FA)的逻辑表达式为:
Fi=Ai⊕
Bi⊕CiCi+1=AiBi+BiCi+CiAi
为了将全加器的功能进行扩展以完成多种算术逻辑运算,先不将输入Ai和Bi和下一位的进位Ci直接进行全加,而是将Ai和Bi先组合由S0,S1,S2,S3控制的组合函数Xi和Yi,然后再将Xi,Yi和下一位进位数通过全加器进行全加,这样,不同的控制参数可以得到不同的组合函数,以能够实现多种算术运算和逻辑运算。定点运算器的组成——多功能算术/逻辑运算单元S1全加器函数发生器FiCn+i+1Cn+iXiYiAiBiS0S2S3S0S1
Yi
S2S3
Xi
00
Ai
00
1
01
AiBi
01
Ai+Bi
10
AiBi
10
Ai+Bi
11
0
11
AiXi、Yi与控制参数和输入量的关系定点运算器的组成——多功能算术/逻辑运算单元ALU的某一位逻辑表达式如下:Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1BiFi=Yi+Xi+Cn+iCn+i+1=Yi+XiCn+i定点运算器的组成——多功能算术/逻辑运算单元每一位的进位公式可递推如下:Cn+1=Y0+X0CnCn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1CnCn+3=Y2+X2Cn+2=Y2+X2Y1+Y0X1X2+X0X1X2CnCn+4=Y3+X3Cn+3
=Y3+X3Y2+X2X3Y1+Y0X1X2X3+X0X1X2X3Cn定点运算器的组成——多功能算术/逻辑运算单元设:该式表明,第0位的进位输入可以直接传送到最高进位位上去,因而可以实现高速运算。G=Y3+X3Y2+X2X3Y1+Y0X1X2X3P=X0X1X2X3则:
Cn+4=G+PCn其中:G称为进位发生输出
P称为进位传送输出用负逻辑表示的4位算术/逻辑运算单元(ALU)的逻辑电路图如下,它是根据上面的原始推导公式用TTL电路实现的。这个期间的商业标号为74181ALU。两级先行进位
并行进位7418216位二级并行进位ALU7418174181741817418174182C0C4C8C12C1674181------4片74182------1片32位ALU64位3级先行进位ALU74181-----16片
74182---------5片C0181181741827418274182C64定点运算器的基本结构运算器包括ALU、阵列乘除器、寄存器、多路开关、三态缓冲器、数据总线等逻辑部件。计算机的运算器的结构一般有三种。定点运算器的基本结构ABALU通用寄存器特殊寄存器单总线结构的运算器输入数据和操作结构需要三次串行的选通操作,但它并不会对每种指令都增加很多执行时间。由于只控制一条总线,所以控制电路比较简单。通用寄存器特殊寄存器特殊寄存器ALU缓冲器总线1总线2
两个操作数同时加到ALU进行运算,只需要一次操作控制,而且马上得到运算结果。
ALU的输出不能直接加到总线上去,这是因为,当形成操作结构的输出时,两条总线都被输入数据占据,因而必须在ALU的输出端设置缓冲器。双总线结构的运算器定点运算器的基本结构定点运算器的基本结构通用寄存器ALU特殊寄存器总线旁路器总线1总线2总线3
ALU的两个输入端分别由总线提供,而ALU的输出则与第三条总线相连。这样,算术逻辑操作就可以在一步的控制之内完成。设置一个总线旁路器,如果一个操作数不需要修改,而直接从总线2传送到总线3,那么可以通过控制总线旁路器把数据传出。2.6浮点数的表示10010100100101000110110001101100浮点运算器——浮点运算方法浮点数的加法、减法运算设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey,实现浮点加减法算的基本步骤分为四步完成:
⑴0操作数检查:用来判断两个操作数中是否有一个为0.
⑵对阶操作:即比较两个浮点数的阶码值的大小,求E=Ex-Ey,然后将小阶对大阶。
⑶尾数进行加或减运算:实现尾数的加减运算,执行两个完成对阶后的浮点数的求和(差)的过程
⑷规格化并进行舍入处理:若得到的结果不满足规格化规则,就必须把它变成规格化的数。舍入操作,在执行对阶或右规操作时,会使位数低位上的一位或若干位的数值被移掉,使数值精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用。浮点运算器——浮点运算方法取指定位数舍入处理阶码减1尾数左移1位尾数加法(带符号)小阶加1尾数右移1位加法减法Y变符号X=0?Y=0?z←yz←xz←另一数z←0报告上溢报告下溢阶码相同?尾数=0?尾数=0?阶码加1尾数右移1位阶码上溢阶码下溢尾数上溢已是1.M0操作检查对阶操作尾数加减结果规格化结束是是是是是是是是否否否否否否否否浮点运算器——浮点运算方法例:设X=2010*0.11011011,Y=2100*(-0.10101100),求X+Y。(假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位.)浮点运算器——浮点运算方法解:浮点表示为:
[X]浮=00010,0.11011011
[Y]浮=00100,1.01010100(1)对阶
E=Ex-Ey=00010+11100=11110即△E为-2,X的阶码小,应使Mx右移两位,Ex加2,得:
[X]浮=00100,0.00110110(11)浮点运算器——浮点运算方法+(2).尾数求和
0.00110110(11)1.010101001.10001010(11)浮点运算器——浮点运算方法
(3).规格化和舍入处理结果的符号位与最高符号数值位相同,应执行左规处理,所谓左规格化的规则,就是尾数左移1位,阶码减1,所以结果为1.00010101(10),阶码为00011
舍入处理,采用0舍1入法处理,则有
1.00010101
+11.00010110浮点运算器——浮点运算方法(4).判溢出阶码的符号位为00,不溢出。所以最终的结果为
X+Y=2011*(-0.11101010)浮点运算器——浮点运算方法例:设X=2001*(-0.111),Y=2010*0.101,求X-Y.(假设两数均以补码表示,阶码采用3位,尾数采用4位,均包括符号位.)浮点运算器——浮点运算方法解:浮点表示为:
[X]浮=001,1.001
[Y]浮=010,0.101(1)对阶
[△E]补=[Ex]补-[Ey]补=001+110=111
即△E为-1,X的阶码小,应使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省教育机构2025年度劳动合同规范文本2篇
- 2025年金融资产交易居间委托服务合同2篇
- 二零二五年度法院离婚案件财产分割操作合同3篇
- 2025年度绿化带病虫害防治服务合同范本4篇
- 二零二五年度医疗设备采购与租赁合同参考文本4篇
- 2025版模具行业市场调研与购销合同4篇
- 2025年人才招聘解决方案合同
- 2025年古玩字画担保协议
- 2025年宽带网络使用合同
- 2025年融资居间服务合同的比较研究
- 2025年度版权授权协议:游戏角色形象设计与授权使用3篇
- 心肺复苏课件2024
- 《城镇燃气领域重大隐患判定指导手册》专题培训
- 湖南财政经济学院专升本管理学真题
- 全国身份证前六位、区号、邮编-编码大全
- 2024-2025学年福建省厦门市第一中学高一(上)适应性训练物理试卷(10月)(含答案)
- 《零售学第二版教学》课件
- 广东省珠海市香洲区2023-2024学年四年级下学期期末数学试卷
- 房地产行业职业生涯规划
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- MOOC 数字电路与系统-大连理工大学 中国大学慕课答案
评论
0/150
提交评论