您好,欢迎访问三七文档
第三章运算方法与运算器计算机组成原理2本章主要知识点3.1定点补码的加/减运算和溢出判断补码的加/减运算方法及、溢出方法3.2定点补码乘/除法运算定点数的位移运算、定点数的乘/除运算3.3浮点数据运算浮点数的加/减运算及其规格化3.4算术逻辑运算单元的设计算术/逻辑运算单元的设计串行加法器和并行加法器的设计计算机组成原理3[X]补+[Y]补=[X+Y]补mod2n+1一、定点数的加/减法运算及溢出判断[X]补[Y]补=[X-Y]补=[X]补+[Y]补1.定点数的加/减法运算法则计算机组成原理4解:[X]补=0.1011[Y]补=1.1011[X+Y]补=[X]补+[Y]补=0.1011+1.1011=0.0110所以:X+Y=+0.0110例1已知X=+0.1011Y=-0.0101求X+Y计算机组成原理5解法1:[Y]补=1.1011Y=–0.0101-Y=0.0101[-Y]补=[0.0101]补=0.0101解法2:由[-Y]补=-[Y]补求[–Y]补可直接对[Y]补连同符号位在内,求反然后在最低位加1实现[-Y]补=0.0101例2已知[Y]补=1.1011求[–Y]补计算机组成原理解:[X]补=0.1011[Y]补=0.0110[-Y]补=1.1010[X-Y]补=[X]补+[-Y]补=0.1011+1.1010=0.0111X-Y=0.0111例3已知X=+0.1011Y=+0.0110求X-Y计算机组成原理71)溢出的概念:运算的结果超出了某种数据类型的表示范围。例4已知X=+0.1011Y=+0.1001求X+Y解:[X]补=0.1011[Y]补=0.1001[X+Y]补=[X]补+[Y]补=0.1011+0.1001=1.0100X+Y=-0.1100两个正数之和为负数2、溢出与溢出检测方法计算机组成原理8解:[X]补=1.0011[Y]补=1.0101[X+Y]补=[X]补+[Y]补=1.0011+1.0101=0.1000X+Y=0.1000两个负数之和为正数例5已知X=–0.1101Y=–0.1011求X+Y计算机组成原理92)溢出的检测与判断溢出只可能发生在同符号数相加时(1)方法1:对操作数和运算结果的符号位进行检测•溢出发生的条件:结果的符号位与操作数的符号不相同•溢出判断方法(设X0,Y0为参加运算数的符号位,S0为结果的符号位)V=X0Y0S0+X0Y0S0•当V=1时,表示运算结果溢出。•根据上述表达式可以画出相应电路计算机组成原理10当V取值为1时,表示发生了溢出。其中的P为加/减操作控制P=0加法运算110110000011011P=1减法运算110111111100100具有加/减控制和溢出检测的运算部件。计算机组成原理11(2)对最高有效进位和符号进位进行检测•设X=X0.X1X2…Xn,设Y=Y0.Y1Y2…Yn,运算时最高有效数据位产生的进位为C1,符号位产生的进位为C0。则溢出检测电路为:V=C0C1•直观理解:a)当参加运算的两个数均为正数,则C0=0(且符号位和为0),此时若C1=1,则会改变结果的符号,发生了溢出。b)当参加运算的是两负数,则C0=1(且符号位和为0),此时若C1=0,则会改变运算结果的符号,发生了溢出。•根据上述表达式可以设计溢出检测电路。计算机组成原理12V=C0C1计算机组成原理a.变形补码[X]补=X2X04+X0X–2mod4此时[X]补=Xf1Xf2.X1X2X3…Xnb.溢出的检测•上溢:双符号位为01•下溢:双符号位为10•溢出的判断:V=Xf1Xf2最高符号位为结果的真实符号(3)方法3:采用变形补码的双符号位计算机组成原理14解:[X]补=00.1011[Y]补=00.1001[X+Y]补=[X]补+[Y]补=00.1011+00.1001=01.0100发生了上溢例6已知X=+0.1011Y=+0.1001用变形补码求X+Y计算机组成原理15解:[X]补=11.0011[Y]补=11.0101[X+Y]补=[X]补+[Y]补=11.0011+11.0101=10.1000发生了下溢例7已知X=–0.1101Y=–0.1011求X+Y计算机组成原理二、定点数的乘/除法运算0.010×0.011001000100000+00000.000110a)手工乘法中,从乘数的最低位开始依次得到位积,并将位积逐位左移不同的位数,最后将所有位积一次相加。1)手工乘法和机器乘法方法b)机器中实现乘法时也是从乘数的最低位开始逐次得到位积,与手工乘法不同的是,用部分积右移1位加上本次位积,得新部分积.这样就不再需要左移每次得到的位积.1.定点数乘法计算机组成原理172)算术移位操作设X=0.1001求[X]补=?[2X]补=?[X/2]补=?0.10011.0010(溢出)0.0100计算机组成原理18•符号位单独参加运算,数据位取绝对值参加运算。•运算法则:设:[X]原=X0.X1X2…Xn[Y]原=Y0.Y1Y2…Yn则:P0=X0Y0|P|=|X|·|Y|•每次循环累加的位积为|X|或0,每得到一次部分积,就将其右移一位,从而得到一位乘积.3)原码一位乘法计算机组成原理19例12已知X=0.110Y=-0.101计算[X]原·[Y]原解;[X]原=0.110[Y]原=1.101部分积乘数/判断位说明00.000Y0.101Y3=1部分积+|X|+00.11000.110每次运算结果右移1位00.0110Y0.10Y3=0部分积+0+00.00000.01100.00110Y0.1Y3=1部分积+|X|+00.11000.11100.011110Y0[X]原·[Y]原=X0Y0.011110=1.011110计算机组成原理20原码一位乘法逻辑结构ALU计数器CNTALUAAY移位控制X0AALUYnYn算术右移控制计算机组成原理21算法描述:•在[Y]补后添加一个0作为Yn+1,令部分积为0•如果Yn+1=Yn部分积+0,并将结果右移一位•如果Yn+1Yn部分积+[–X]补,并将结果右移一位•如果Yn+1Yn部分积+[X]补,并将结果右移一位4)补码一位乘法运算方法[Z0]补=0,[Z1]补=2-1{[Z0]补+(yn+1-yn)[X]补}[Z2]补=2-1{[Z1]补+(yn–yn-1)[X]补}……………………………………..[Zn]补=2-1{[Zn-1]补+(y2–y1)[X]补}[Zn+1]补=2-1{[Zn]补+(y1–y0)[X]补}[XY]补=[X]补•[(Y1–Y0)+2-1(Y2-Y1)+2-2(Y3-Y2)+…+2-(n-1)(Yn–Yn-1)+2-n(0-Yn)]计算机组成原理22例13已知X=+0.1101Y=+0.1011用补码一位乘法求XY解:[X]补=0.1101[Y]补=0.1011[–X]补=1.0011部分积乘数说明00.00000.10110Yn+1Yn部分积+[–X]补+[–X]补11.001111.001111.10011.01011将结果右移一位,Yn+1=Yn部分积+0+00.000011.100111.110011.0101将结果右移一位,Yn+1Yn部分积+[X]补+00.110100.1001计算机组成原理23部分积乘数说明00.0100111.010将结果右移一位,Yn+1Yn部分积+[–X]补+11.001111.011111.10111111.01将结果右移一位,Yn+1Yn部分积+[X]补+00.110100.1000[XY]补=0.10001111XY=0.10001111计算机组成原理245)补码一位乘法的逻辑原理图计算机组成原理0.10110.10010x00.-0.010112-1y除数右移一位,减除数0.001110r1-0.0010112-2y除数右移一位,减除数10.0000110r2110.00010112-3y除数右移一位,不减除数0.00001100r3-0.000010112-4y除数右移一位,减除数0.00000001r41)手工除法运算•除法可通过减法实现•由人判断两数是否够减2、定点数的除法运算计算机组成原理(1)判断两数的大小用减法实现,若差0,则够除;反之不够除(2)将手工每次右移除数,改为左移被除数.重复(1)和(2)(3)最后的余数需要右移(2)中左移的次数.2)计算机中实现除法的方法计算机组成原理27法则:设[X]原=Xf.X1X2X3…Xn,[Y]原=Yf.Y1Y2Y3…Yn,用原码一位除法求Q=Q0.Q1Q2Q3…Qn=X/Y则:Qf=XfYf[Q]原=(XfYf)+(0.X1X2X3…Xn/0.Y1Y2Y3…Yn)该法则隐含有下列条件:|X|1|Y|1|X||Y|3)原码一位除法计算机组成原理28•试商通过X–Y实现,当试商结果0时,试商操作可以作为除法的一步有效操作,商上“1”•当试商的结果0时,恢复余数!即执行+Y,显然,此时不能上商•例14已知[x]原=0.1001,[y]原=1.1011,用原码一位除法求X/Y解:[X]原=0.1001[|X|]补=0.1001[Y]原=1.1011[|Y|]补=0.1011[-|Y|]补=1.01014)原码恢复余数除法计算机组成原理29计算机组成原理305)加减交替法•恢复余数法存在的问题:不能根据参加运算两个数的位数唯一确定运算的步数,从而给控制器的设计带来困难!。•加减交替法:(1)余数0,商上1,左移下次减除数(同恢复余数法)(2)余数0,商上0,左移下次加除数(新的方法)计算机组成原理例15已知X=0.1001Y=-0.1011用原码恢复余数法求X/Y解:[X]原=0.1001[|X|]补=0.1001[Y]原=1.1011[|Y|]补=0.1011[-|Y|]补=1.010100.1001+[-|Y|]补11.0101被除数/余数商说明11.1110r0商上011.11000左移加除数+[|Y|]补00.1011+y00.0111r0商上100.111001左移减除数+[-|Y|]补11.0101-y00.0011r0商上100.0110011左移减除数计算机组成原理被除数/余数商说明11.1011r0商上011.01100110左移加除数+[|Y|]补00.1011+y00.0001r0商上10.1101移商[Q]原=1.1101[r]原=0.00012–4•该方法的改进之处:运算步数固定,仅与字长有关!+[-|Y|]补11.0101-y00.0110011左移减除数计算机组成原理332、补码一位除法----加减交替法(1)符号位参加运算。(2)补码一位除法的试商方法。被除数与除数同号,被除数减除数;反之加除数,该步不上商。余数与除数同号,商上1,余数左移一位,下次减除数;反之商上0,余数左移一位,下次加除数。重复,包括符号位在内共做n+1次,且最后一步只移商。计算机组成原理34例16:已知x=-0.1001y=+0.1101用补码一位除法求x/y解:[x]补=1.0111[y]补=0.1101[-y]补=1.0011被除数/余数商说明11.0111被除数与除数异号被除数加除数+[y]补00.110100.0100余数与除数同号,商上1,左移余数减除数00.10001+[-y]补11.001111.1011余数与除数异号,商上0,左移,余数加除数11.01101.0+[y]补00.110100.0011余数与除数同号,商上1,左移余数减除数计算机组成原理11.1001余数与除数异号,商上0,左移,加除数余数/被除数商说明11.00101.010+[y]补00.110111.1111余数与除数异号,商上0,移商1.0100[x/y]补=1.0100x/y=-0.1100余数=-0.0000000100.01101.01+[
本文标题:组成原理课程第三章
链接地址:https://www.777doc.com/doc-2058005 .html