《计算机组成原理 第三章1运算器.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理 第三章1运算器.ppt(117页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章 CPUCPU子系统子系统n中央处理器(中央处理器(CPU)是计算机系统的是计算机系统的核心组成部件,它包括运算器和控制核心组成部件,它包括运算器和控制器两大部分。器两大部分。本章主要讨论:本章主要讨论:运算器运算器 控制器控制器数据通路结构数据通路结构与外部的连接与外部的连接CPUCPU组成组成CPUCPU工作原理工作原理指令的执行过程指令的执行过程3.1算术、逻辑运算基础算术、逻辑运算基础计算机进行运算的特点:计算机进行运算的特点:(1)所有数据都是用二进制数位形式来表示的。所有数据都是用二进制数位形式来表示的。(2)在机器内部,数是以编码形式即机器数来表示的。在机器内部,数是
2、以编码形式即机器数来表示的。(3)机器运算规模有限,因而机器运算就要解决运算机器运算规模有限,因而机器运算就要解决运算方法、数据表示格式及数据长度的选取、规定等方法、数据表示格式及数据长度的选取、规定等问题。问题。(4)用计算机进行运算时,都要把复杂的运算,简化用计算机进行运算时,都要把复杂的运算,简化为一系列的、最基本的运算才能实现。计算机可为一系列的、最基本的运算才能实现。计算机可以实现的基本运算有算术运算以实现的基本运算有算术运算(加、减、乘、除等加、减、乘、除等)和逻辑运算和逻辑运算(与、或、异或等与、或、异或等)。3.1.1定点加减运算定点加减运算补码加减法补码加减法:n补码的一个重
3、要特点是它可以直接进行加补码的一个重要特点是它可以直接进行加减法运算,并且计算简单,因此计算机中减法运算,并且计算简单,因此计算机中基本采用补码加减法。基本采用补码加减法。n运算规则:运算规则:(1)参与运算的操作数用补码表示,符号位作为数)参与运算的操作数用补码表示,符号位作为数的一部分直接参与运算,所得即为补码表示的运的一部分直接参与运算,所得即为补码表示的运算结果。算结果。(2)若操作码为加,则两数直接相加;)若操作码为加,则两数直接相加;(3)若操作码为减,则将减数变补后再与被减数相)若操作码为减,则将减数变补后再与被减数相加。加。3.1.1定点加减运算定点加减运算n计算公式计算公式X
4、+Y补补=X补补+Y补补X-Y补补=X补补+-Y补补n例例1已知已知X=9,Y=3,求求X+Y补补,X-Y补补,Y-X补补。解:解:X+Y补补=X补补+Y补补=01001+00011=01100X-Y补补=X补补+-Y补补=01001+11101=100110Y-X补补=Y补补+-X补补=00011+10111=110103.1.1定点加减运算定点加减运算n例例2X=0.001010Y=-0.100011求求X-Y补补解解X补补=0.001010-Y补补=0.100011则则X-Y补补=X补补+-Y补补=0.001010+0.100011=0.1011013.1.2溢出判断与移位溢出判断与移位
5、一一.溢出溢出 机器数字长机器数字长5位,其中含位,其中含1位数符,补码位数符,补码运算,问:定点整数表示范围?运算,问:定点整数表示范围?-16 +15 (10000 01111)所谓溢出就是指运算结果大于机器所能所谓溢出就是指运算结果大于机器所能表示的最大正数或小于机器所能表示的表示的最大正数或小于机器所能表示的最小负数。最小负数。3.1.2溢出判断与移位溢出判断与移位n正溢:两个正数相加后结果超出允许的正溢:两个正数相加后结果超出允许的表示范围。表示范围。如:如:1版版:P106例例3-32版版:P100例例3-3n负溢:两个负数相加后结果超出允许的负溢:两个负数相加后结果超出允许的表示
6、范围。表示范围。如:如:1版版:P106例例3-52版版:P100例例3-53.1.2溢出判断与移位溢出判断与移位n溢出判别溢出判别定义:两操作数的数符分别为定义:两操作数的数符分别为SA、SB,结结果的数符为果的数符为Sf。符号位直接参与运算,产符号位直接参与运算,产生的符号位进位为生的符号位进位为Cf。最高有效数位产生最高有效数位产生的进位为的进位为C。1.判别方法一:判别方法一:溢出溢出=只有同号数相加才能产生溢出,溢出的标志是结果数符与操只有同号数相加才能产生溢出,溢出的标志是结果数符与操作数数符相反作数数符相反3.1.2溢出判断与移位溢出判断与移位2.判别方法二:判别方法二:溢出溢出
7、=(Cf为符号位运算产生的进位,为符号位运算产生的进位,C为最高有效数位产生的进位。)为最高有效数位产生的进位。)Cf 和和C不同时表明溢出不同时表明溢出3.判别方法三:判别方法三:操作数采用双符号位(变形补码),通过运算结果操作数采用双符号位(变形补码),通过运算结果的符号位进行判断:(的符号位进行判断:(P101)00 结果为正,无溢出结果为正,无溢出 01 结果正溢结果正溢10 结果负溢结果负溢 11结果为负,无溢出结果为负,无溢出3.1.2溢出判断与移位溢出判断与移位二二.移位移位n逻辑移位逻辑移位(1)数字代码为纯逻辑代码,没有数值数字代码为纯逻辑代码,没有数值意义意义(2)分为:循
8、环左移、循环右移、非循环)分为:循环左移、循环右移、非循环左移、非循环右移左移、非循环右移3.1.2溢出判断与移位溢出判断与移位n算术移位算术移位1、原码(及正数补码)移位规则:数符不、原码(及正数补码)移位规则:数符不变,空位补变,空位补02、负数补码移位规则:、负数补码移位规则:左移:数符不变,空位即末位补左移:数符不变,空位即末位补0右移:数符不变,空位补右移:数符不变,空位补13.1.2溢出判断与移位溢出判断与移位3.例:例:n原码和正数补码原码和正数补码0.0101左移一位左移一位0.10101.0101左移一位左移一位1.101000.1010左移一位左移一位01.0100(*双符
9、号位时可左移双符号位时可左移1位,第二符号位暂存数值,第位,第二符号位暂存数值,第一符号位仍表示符号)一符号位仍表示符号)1.1010右移一位右移一位1.010101.0100右移一位右移一位00.1010(*双符号位时右移双符号位时右移1位,第二符号位暂存的数值移到位,第二符号位暂存的数值移到最高有效位。)最高有效位。)3.1.2溢出判断与移位溢出判断与移位n负数补码负数补码左移:左移:1.1011左移一位左移一位1.011011.0110左移一位左移一位10.1100右移:右移:1.0110右移一位右移一位1.101110.1100右移一位右移一位11.01103.1.2溢出判断与移位溢出
10、判断与移位三三.舍入舍入舍入的原则舍入的原则 使本次舍入产生的误差及累计误差都比较小使本次舍入产生的误差及累计误差都比较小两种舍入规则两种舍入规则 1、0舍舍1入入 2、末位、末位“恒置恒置1”例:例:课本课本P103 例例3-8 例例3-113.1.3定点乘法运算定点乘法运算n手算例子:手算例子:11011101000011010.10001111由于结果为负,所以由于结果为负,所以3.1.3定点乘法运算定点乘法运算n手手算到机器实现要解决的问题算到机器实现要解决的问题1、符号问题、符号问题 解决方法:解决方法:原码乘法符号单独处理,补码乘法符原码乘法符号单独处理,补码乘法符号参与运算号参与
11、运算2、乘积等于各位积之和(要考虑权)、乘积等于各位积之和(要考虑权)“位积位积”是乘数的某位乘以被乘数所得到的积。是乘数的某位乘以被乘数所得到的积。“部分积部分积”是位积的和。是位积的和。1)n位乘法运算就有位乘法运算就有n个位积,要个位积,要n个寄存器来存放位积;个寄存器来存放位积;2)加法器难以完成)加法器难以完成n个位积的同时求和;个位积的同时求和;3)需要)需要2n位字长的加法器,通常的加法器都是位字长的加法器,通常的加法器都是n位字长。位字长。解决方法:解决方法:n次累加与移位循环或阵列乘法器次累加与移位循环或阵列乘法器3.1.3定点乘法运算定点乘法运算n手算的改进(手算的改进(将
12、一次相加改为分步累加)将一次相加改为分步累加)110101101+1101100111 100111+0000 100111 0100111+110110001111100011113.1.3.1原码一位乘法原码一位乘法一一.基本思想:基本思想:1.乘积的数值部分是乘数和被乘数的数值部分相乘之积。乘积的数值部分是乘数和被乘数的数值部分相乘之积。2.乘积的符号由两数的符号异或得到(同号相乘为正,乘积的符号由两数的符号异或得到(同号相乘为正,异号相乘为负)。异号相乘为负)。3.每次用一位乘数去乘被乘数,并每次用一位乘数去乘被乘数,并将一位乘数所对应的将一位乘数所对应的位积与原部分积的累加和相加,并
13、移位。位积与原部分积的累加和相加,并移位。设设 X=Sx.x1x2xn,Y=Sy.y1y2yn 乘积的尾数乘积的尾数:P=|X|.|Y|乘积的符号:乘积的符号:Sp=Sx Sy3.1.3.1原码一位乘法原码一位乘法二二.举例实现举例实现已知已知X=0.1101,Y=-0.1011,求,求XY=?设置寄存器:设置寄存器:A A:存放存放部分积累加和、乘积高位部分积累加和、乘积高位 B B:存放存放被乘数被乘数 C C:存放存放乘数、乘积低位乘数、乘积低位设置初值:设置初值:A=00.0000A=00.0000 B=|X|=00.1101 B=|X|=00.1101 C=|Y|=.1011 C=|
14、Y|=.1011步数步数 条件条件 操作操作 A C A C 00.0000 .10100.0000 .1011 1 1 1)C Cn n=1=1+B+BC Cn n+00.1101+00.110100.00.11011101 0.11010.1101 0.101 0.1011 1 1101 1101 1101 1101 0000 0000 1101 1101 0.100011110.10001111BC00.00.011001101 1.10.101 12 2)C Cn n=1=1+B+B+00.1101+00.11010 01 1.0011001100.00.100110011111.1.
15、10 03 3)C Cn n=0=0+0+0+00.0000+00.000000.00.1001100100.00.01000100111111.1 1+B+B4 4)C Cn n=1=1+00.1101+00.11010 01 1.0001000100.00.1000100011111111X X原原YY原原 =1.10001111=1.10001111三三.算法流程算法流程0 A0 A、X BX B、Y CY C、0 CR0 CRC Cn n=1 =1?CR=n CR=n?1/21/2(A+BA+B)A A,C C1/21/2(A+0A+0)A A,C C CR+1 CR CR+1 CRY
16、YNN SxSx+SySy S SA A3.1.3.1原码一位乘法原码一位乘法四四.运算规则运算规则(1 1)操作数、结果用原码表示;)操作数、结果用原码表示;(2 2)绝对值运算,符号单独处理;)绝对值运算,符号单独处理;(3 3)被乘数)被乘数(B)(B)、累加和累加和(A)(A)取双符号位;取双符号位;(4 4)乘数末位)乘数末位(CnCn)为判断位,其状态决定为判断位,其状态决定 下步操作;下步操作;(5 5)作)作n n次循环(累加、右移)。次循环(累加、右移)。3.1.3.1原码一位乘法原码一位乘法五五.逻辑实现逻辑实现加法器输入端控制信号:加法器输入端控制信号:+A+A、+B+B
17、加法器输出端控制信号:加法器输出端控制信号:1/2 A1/2 A、C C、CPCPA A、CPCPC C C4 C3 C2 C1C4 C3 C2 C1 A4 A3 A2 A1A4 A3 A2 A1 门门4 4 门门3 3 门门2 2 门门1 1 门门4 4 门门3 3 门门2 2 门门1 1 4 3 2 14 3 2 1 1/2 ACPACPCCC4 C3 C2+A+BA1 B13.1.3.2补码一位乘法补码一位乘法一一.原则原则操作数与结果均以补码表示,连同符号位操作数与结果均以补码表示,连同符号位一起,按相应算法运算。一起,按相应算法运算。二二.实现方法实现方法:1.校正法校正法XY补补=
18、X补补0.Y1Y2Yn-X补补Y0 乘数乘数Y的符号位的符号位3.1.3.2补码一位乘法补码一位乘法(1 1)Y Y为正:为正:Y Y补补 =0.Y=0.Y1 1Y Y2 2Y Yn n,Y0=0 XY补补=X补补0.Y1Y2Yn-X补补Y0 =X补补0.Y1Y2Yn(2 2)Y Y为负:为负:Y Y补补 =1.Y=1.Y1 1Y Y2 2Y Yn n,Y0=1XY补补=X补补0.Y1Y2Yn-X补补Y0 =X补补0.Y1Y2Yn-X补补 3.1.3.2补码一位乘法补码一位乘法2.比较法比较法:展开为部分积的累加和形式:展开为部分积的累加和形式:XY补补=X补补0.Y1Y2Yn-X补补Y0=X
19、补(-Y0+2 Y1+2 Y2+2 Yn)-1-1 -2-2 -n-n -(n-1)-n-(n-1)-n +(2 Yn-2 Yn)=X补(Y1-Y0)+2 (Y2-Y1)+2 (Y3-Y2)-1 -2-1 -2 =X补-Y0+(Y1-2 Y1)+(2 Y2-2 Y2)-1-1 -1-1 -2 -2 =X补(Y1-Y0)+2 (Y2-Y1)+2 (Y3-Y2)-1 -2-1 -2+2(0 -Yn)-n+2(Yn+1-Yn)-n+2(Yn+1-Yn)-n3.1.3.2补码一位乘法补码一位乘法 若定义若定义ZZ0 0 为初始部分积,为初始部分积,ZZ1 1 补补ZZn n 补依次为补依次为各步求得的
20、累加并右移后的部分积,可将上式改写各步求得的累加并右移后的部分积,可将上式改写为:为:Z0补补=0Z1补补=2-1 Z0补补+(Yn+1-Yn)X补补Z2补补=2-1 Z1补补+(Yn-Yn-1)X补补Zn补补=2-1 Zn-1补补+(Y2-Y1)X补补XY补补=Zn补补+(Y1-Y0)X补补3.1.3.2补码一位乘法补码一位乘法三三.比较法算法比较法算法n由于它的操作是乘数相邻两位之差(低位由于它的操作是乘数相邻两位之差(低位减高位),即两位的比较结果,所以称为减高位),即两位的比较结果,所以称为比较法。比较法。1.基本操作:基本操作:被乘数被乘数X补补乘以对应的乘数相邻两位之差值乘以对应的
21、乘数相邻两位之差值再与原部分积累加,然后右移一位,形成再与原部分积累加,然后右移一位,形成该步的部分累加和。该步的部分累加和。3.1.3.2补码一位乘法补码一位乘法YnYn(高位高位)Yn+1Yn+1(低位低位)操作操作(A(A补补为部分积累加和为部分积累加和)0 00 0 0 1 0 1 1 0 1 0 1 1 1 1 原部分积右移一位原部分积右移一位 1/2A1/2A补补原部分积加原部分积加X X补补后再右移一位后再右移一位 1/2(A1/2(A补补+X+X补补)原部分积加原部分积加-X-X补补后再右移一位后再右移一位1/2(A1/2(A补补-X-X补补)原部分积右移一位原部分积右移一位
22、1/2A1/2A补补(0)(0)(1)(1)(-1)(-1)(0)(0)3.1.3.2补码一位乘法补码一位乘法2.2.例例X=-0.1101,Y=-0.1011,求求(XY)补补。设初值:设初值:A=00.0000,B=X补补=11.0011,-B=(-X)补补=00.1101,C=Y补补=1.0101步数步数 条件条件 操作操作 A C A C 00.0000 1.01000.0000 1.0101 1 1 1)1 01 0-B-BC Cn n+00.1101+00.110100.00.1101110100.00.011001101 11.011.0101012 2)0 10 1+B+B+1
23、1.0011+11.001111.11.1001100111.11.1100110011111.01.010103 3)1 01 0-B-B+00.1101+00.110100.00.1001100100.00.010001001111111.1.01014 4)0 10 1+B+B+11.0011+11.001111.11.0111011111.11.10111011111111111.01.00 0 C Cn+1n+1C Cn nC Cn+1n+15 5)1 01 0-B-B+00.1101+00.11013.1.3.2补码一位乘法补码一位乘法(XY)(XY)补补 =0.10001111=
24、0.100011114 4)0 10 1+B+B+11.0011+11.001111.11.0111011111.11.10111011111111111.01.05 5)1 01 0-B-B+00.1101+00.110100.00.1000100011111111修正修正1.0:-B修正修正0.1:+B修正修正0.0:不修正不修正1.1:不修正不修正3.1.3.2补码一位乘法补码一位乘法3.3.运算规则:运算规则:(1)A(1)A、B B取双符号位,符号参加运算;取双符号位,符号参加运算;(2)C(2)C取单符号位,符号参加移位,以决定最后是否取单符号位,符号参加移位,以决定最后是否 修正
25、;修正;(3)C(3)C末位设置附加位末位设置附加位C Cn+n+1 1,初值为初值为0 0,C Cn nC Cn+n+1 1组成判组成判 断位,决定运算操作断位,决定运算操作;(4)(4)作作n n步循环步循环,若需作第若需作第n+1n+1步步,则不移位则不移位,仅修正。仅修正。3.1.3.2补码一位乘法补码一位乘法4.4.逻辑实现逻辑实现加法器输入端控制信号:加法器输入端控制信号:+A+A、+B+B、+B+B、+1+1加法器输出端控制信号:加法器输出端控制信号:1/2 A1/2 A、C C、A A、CPCPA A、CPCPC C3.1.3.3原码两位乘法原码两位乘法n每次用两位乘数去乘被乘
26、数。每次用两位乘数去乘被乘数。一一.算法分析算法分析Yi(Yi(高位高位)Yi+1()Yi+1(低位低位)部分积部分积 累加、移位累加、移位 0 00 00 10 11 01 01 11 1 1/4A1/4A 1/4(A+X)1/4(A+X)1/4(A+2X)1/4(A+2X)1/4(A+3X)1/4(A+3X)(0)(0)(1)(1)(2)(2)(3)(3)0 0 X X 2X2X 3X3X如何实现如何实现+3X+3X操作?操作?3.1.3.3原码两位乘法原码两位乘法n解决办法:解决办法:1/4(1/4(A+3X)=A+3X)=1/4(1/4(A+2X+X)=1/4(A+2X)+1/4XA+
27、2X+X)=1/4(A+2X)+1/4X 1/4(1/4(A-X+4X)=1/4(A-X)+X A-X+4X)=1/4(A-X)+X 1/4(1/4(A+2X+X)=1/4(A+2X)+1/4XA+2X+X)=1/4(A+2X)+1/4X 1/4(1/4(A-X+4X)=1/4(A-X)+X A-X+4X)=1/4(A-X)+X 1/4(1/4(A-X+4X)=1/4(A-X)+X A-X+4X)=1/4(A-X)+X 设置设置欠帐触发器欠帐触发器C CJ J=0 0 不欠帐不欠帐1 1 欠帐欠帐,下次补作下次补作+X+X操作操作3.1.3.3原码两位乘法原码两位乘法二二.运算规则运算规则0
28、0 0 0 0 00 0 0 0 1 10 1 0 1 0 00 1 0 1 1 1 1 0 1 0 0 01 0 1 0 1 11 1 1 1 0 01 1 1 1 1 1 操操 作作Y Yi i Y Yi+1i+1 C CJ J1/4(A+X)0 C1/4(A+X)0 CJ J1/4(A+X)0 C1/4(A+X)0 CJ J1/4(A+2X)0 C1/4(A+2X)0 CJ J1/4A 0 C1/4A 0 CJ J1/4(A-X)1 C1/4(A-X)1 CJ J1/4(A-X)1 C1/4(A-X)1 CJ J1/4A 1 C1/4A 1 CJ J1/4(A+2X)0 C1/4(A+2
29、X)0 CJ J3.1.3.3原码两位乘法原码两位乘法三三.举例举例例例1.X原原=1.111111,Y原原=0.111001,求求XY原原。解:设初值:解:设初值:A=000.000000,B=|X|=000.111111,2B=001.111110,-B=111.000001,C=|Y|=00.111001 步数步数 条件条件 操作操作 A C A C 000.000000 00.1110000.000000 00.11100101 1 1)0 1 00 1 0+B+BC CJ J +000.111111+000.111111000.000.111111111111000.000.0011
30、11001111111100.1100.1110102 2)1 0 01 0 0+2B+2B+001.111110+001.111110010.010.001101001101000.000.1000111000110111011100.00.11113 3)1 1 01 1 0-B-B+111.000001+111.000001111.111.100100100100111.111.111001111001000111000111 00.00.4 4)0 0 10 0 1+B+B+000.111111+000.111111000.000.111000111000000111000111C C
31、n n-1 1C Cn nC Cn n-1 1C Cn nC CJ J0 0 0 0 2220 0 1 1 还帐还帐XYXY原原=1=1.111000000111.1110000001113.1.3.3原码两位乘法原码两位乘法例例2.X原原=0.00111,Y原原=1.01001,求求XY原原。解:设初值:解:设初值:A=000.00000,B=|X|=000.00111,2B=000.01110,-B=111.11001,C=|Y|=00.010010 3.1.3.3原码两位乘法原码两位乘法步数步数 条件条件 操作操作 A C A C 000.00000 00.0100000.00000 0
32、0.01001 1 0 0C Cn n-1 1C Cn nC CJ J0 0C Cn n-1 1C Cn nC CJ J1 1)1 0 01 0 0+2B+2B+000.01110+000.01110000.000.0111001110222000.000.0001100011101000.0100.010000+000.00000+000.000001110111000.00.0101 000.000.0001100011000.000.0000000000+000.00111+000.001110 02 2)0 0 00 0 00 1 0 0 1 0 0 03 3)+B+B+0+0000.
33、000.0011100111 000.000.0000100001111110111110 00.00.0 0XYXY原原=1=1.0000111111.00001111113.1.3.3原码两位乘法原码两位乘法四四.运算规则运算规则(1 1)绝对值相乘,符号单独处理。)绝对值相乘,符号单独处理。(2 2)A A、B B取三符号位。取三符号位。(3 3)C C取双符号位,参加移位;取双符号位,参加移位;C C尾数凑足偶数位。尾数凑足偶数位。(4 4)C CJ J初值为初值为0 0,根据每步操作决定,根据每步操作决定其状态,其状态,不参不参 加移位。加移位。(5 5)作)作1/21/2n n步步
34、循环;若需增加一步,则该步只还循环;若需增加一步,则该步只还 帐,不移位。帐,不移位。3.1.3.3原码两位乘法原码两位乘法五五.逻辑实现逻辑实现加法器输入端控制信号加法器输入端控制信号:+A+A、+B+B、+2B+2B、+B+B、+1+1加法器输出端控制信号加法器输出端控制信号:1/4 A1/4 A、A A、C C、CPCPA A、CPCPC C、0 C0 CJ J、1 C1 CJ J 23.1.3.4补码两位乘法补码两位乘法补码两位乘法是在补码一位乘法算法拓展来的。补码两位乘法是在补码一位乘法算法拓展来的。以补码一位乘法中,以补码一位乘法中,ZZ1 1 补补 、ZZ2 2 补补两个部分积为
35、例讨论:两个部分积为例讨论:ZZ1 1 补补 =2-1 ZZ0 0 补补 +(Y Yn+1n+1-Y-Yn n)XX补补 Z Z2 2 补补 =2-1 ZZ1 1 补补 +(Y Yn n-Y-Yn-1n-1)XX补补 将将ZZ1 1 补补 代入代入ZZ2 2 补补得:得:ZZ2 2 补补 =2-1 2-1 Z0补补+(Yn+1 Yn)X补补+(Yn Yn-1 )X补补 =2-2 Z0补补+(Yn+1 Yn)X补补+2-1(Yn Yn-1 )X补补 =2-2 Z0补补+(Yn+1 Yn)X补补+2-2(2Yn 2Yn-1 )X补补 =2-2 Z0补补+(Yn+1 Yn)X补补+(2Yn 2Yn-
36、1 )X补补 =2-2 Z0补补+(Yn+1 Yn +2Yn 2Yn-1 )X补补 =2-2 Z0补补+(Yn+1+Yn 2Yn-1 )X补补可见,求可见,求ZZ2 2 补补需要将前次部分积加需要将前次部分积加(Yn+1+Yn 2Yn-1 )X补补,最后,最后再右移再右移2位。所以需对位。所以需对Yn+1 Yn Yn-1 三位做判断。三位做判断。3.1.3.4补码两位乘法补码两位乘法Yn-1YnYn+1X补补的系数的系数操操作作0000部分积右移两位部分积右移两位0011+X补补同上同上0101+X补补同上同上0112+2X补补同上同上100-2+2-X补补同上同上101-1+-X补补同上同上
37、110-1+-X补补同上同上1110同上同上3.1.4定点除法运算定点除法运算n手算除法手算除法例:例:X X=0.101100.10110,Y=0.11111Y=0.11111,求,求X/Y=X/Y=?0.101100.10110 110111010.0.0 01 1 1111111111 0.111110.111110 00 00 01 1 1111111111 10101101010 01 1 1111111111 101110110 00 0.0000000000.0.0.商:商:0.10110 0.10110 余数:余数:0.1011020.101102-5实现除法的关键:实现除法的
38、关键:比较余数、除数比较余数、除数绝对值大小,以绝对值大小,以决定上商。决定上商。3.1.4定点除法运算定点除法运算1、由手算除法过程可知:取绝对值相除,即判断、由手算除法过程可知:取绝对值相除,即判断X Y?,若若X Y,则商则商1,否则商,否则商0。每一步都是。每一步都是余数末位后面补余数末位后面补0与除数比较。与除数比较。2、改进成计算机算法的问题:、改进成计算机算法的问题:1)如何判断够减)如何判断够减?将心算比较改为减法比较,减将心算比较改为减法比较,减Y 用加用加-Y补补实现。实现。2)将余数末位后面补)将余数末位后面补0改为左移余数。使商在一个位改为左移余数。使商在一个位置固定进
39、行。导致正确的余数应为置固定进行。导致正确的余数应为rn.2-n。3)符号符号?原码除法符号单独处理,补码除法符号参与运算。原码除法符号单独处理,补码除法符号参与运算。3.1.4.1原码不恢复余数除法原码不恢复余数除法n恢复余数算法思想恢复余数算法思想:比较两数大小可用减法试探。比较两数大小可用减法试探。22余数余数-除数除数=新余数新余数为正为正:够减够减,商商1 1。为负为负:不够减不够减,商商0,0,恢复原余数。恢复原余数。3.1.4.1原码不恢复余数除法原码不恢复余数除法一一.算法分析算法分析第一步第一步:2 2r r1 1-B=-B=r r2 200第二步第二步:r r2 2+B=+
40、B=r r2(2(恢复余数恢复余数)第三步第三步:2 2r r2 2-B=-B=r r3 32 2r r2 2-B=2(-B=2(r r2 2+B)-B+B)-B =2 =2r r2 2+B=+B=r r3 3 第一步第一步:2 2r r1 1-B=r20-B=r20第二步第二步:2 2r r2 2+B=r3+B=r3 (不恢复余数不恢复余数)3.1.4.1原码不恢复余数除法原码不恢复余数除法二二.算法算法r ri i为为正,正,则则Q Qi i为为1 1,第第i+1i+1步作步作2 2r ri i-Y-Y;r ri i为为负,负,则则Q Qi i为为0 0,第第i+1i+1步作步作2 2r
41、ri i+Y+Y。每步操作后,每步操作后,1 1)如果余数为)如果余数为正正,商,商1 1,余数左移,余数左移1 1位,位,减去减去除数,除数,2 2)如果余数为)如果余数为负负,商,商0 0,余数左移,余数左移1 1位,位,加上加上除数。除数。3.1.4.1原码不恢复余数除法原码不恢复余数除法三三.举例举例X=0.10110X=0.10110,Y=-0.11111Y=-0.11111,求,求X/YX/Y,给出商给出商Q Q和余数和余数R R。解:解:设置:设置:A A:被除数、余数,:被除数、余数,B B:除数,:除数,C C:商:商设初值:设初值:A=|X|=00.10110 B=|Y|=
42、00.11111 A=|X|=00.10110 B=|Y|=00.11111 -B=11.00001 C=|Q|=0.00000 -B=11.00001 C=|Q|=0.00000步数步数 条件条件 操作操作 A C A C 00.10110 0.0000000.10110 0.00000 1 1)为正为正-B-B 01.0110001.01100+11.00001+11.0000100.0110100.011010.00000.00001 12 2)为负为负 -B-B00.1101000.11010+11.00001+11.0000111.1101111.110110.0000.000101
43、03 3)+B+B+00.11111+00.1111111.1011011.101100.000.00101101为正为正00.1010100.10101C Cn n r rQ Q1 1 Q Q2 2 Q Q3 3 r r0 02r2r0 0r r1 12r2r1 1r r2 22r2r2 2r r3 34 4)为正为正-B-B 01.0101001.01010+11.00001+11.0000100.0101100.010110.00.010111011Q Q4 4 2r2r3 3r r4 4步数步数 条件条件 操作操作 A C A C 00.01011 0.000.01011 0.0101
44、1 1011 6 6)为负为负 恢复余数恢复余数+B+B+00.11111+00.1111100.1011000.10110Q=-0.10110Q=-0.10110C Cn nQ Q4 4 r r4 45 5)为正为正-B-B 00.1011000.10110+11.00001+11.0000111.1011111.101110.0.1011010110Q Q5 5 2r2r4 4r r55r r5 5R=0.10110R=0.1011022-5-5X/Y=-0.10110+X/Y=-0.10110+0.101100.1011022-5-5-0.11111-0.11111余数符号与被除数相同余
45、数符号与被除数相同3.1.4.1原码不恢复余数除法原码不恢复余数除法四四.运算规则运算规则(1 1)A A、B B取双符号位,取双符号位,X X、Y Y取绝对值运算,取绝对值运算,X Y X Y。(2 2)根据余数的正负决定商值及下一步操作。根据余数的正负决定商值及下一步操作。(3 3)求)求n n位商,作位商,作n n步操作;若第步操作;若第n n步余数为负,则第步余数为负,则第n+1n+1步恢复余数,不移位。步恢复余数,不移位。五五.逻辑实现逻辑实现加法器输入端控制信号:加法器输入端控制信号:+2A+2A、+A+A、+B+B、+B+B、+1+1加法器输出端控制信号:加法器输出端控制信号:A
46、 A、C C、Q Qi i CnCn、CPCPA A、CPCPC C 3.1.4.2补码不恢复余数除法补码不恢复余数除法如何判断是否够减?如何判断是否够减?如何上商?如何上商?如何确定商符?如何确定商符?1.1.判够减判够减(1)(1)同号相除同号相除4 74 77 47 4-4-7-4-7-7-4-7-41 10 01 10 0-4-43 3-7-7-3-3-(-4)-(-4)-3-3-(-7)-(-7)3 3够减够减不够减不够减够减够减不够减不够减够减:够减:r与与Y同号;同号;不够减:不够减:r与与Y异号。异号。3.1.4.2补码不恢复余数除法补码不恢复余数除法-4 7-4 7-7 4-
47、7 44-74-77-47-4(2)(2)异号相除异号相除 1 10 0 1 1 0 0+(-4)+(-4)3 3+(-7)+(-7)-3-3 +4+4-3-3 +7+7 3 3够减够减够减够减不够减不够减不够减不够减够减:够减:r与与Y异号;异号;不够减:不够减:r与与Y同号。同号。3.1.4.2补码不恢复余数除法补码不恢复余数除法(3 3)判断规则)判断规则同号:作同号:作X X补补-Y-Y补补X X补补Y Y补补够减够减:r r补补与与Y Y补补同号同号不够减不够减:r r补补与与Y Y补补异号异号异号:作异号:作X X补补+Y+Y补补够减够减:r r补补与与Y Y补补异号异号不够减不够
48、减:r r补补与与Y Y补补同号同号3.1.4.2补码不恢复余数除法补码不恢复余数除法2.2.求商值求商值X X补补Y Y补补同号:商为正同号:商为正异号:商为负异号:商为负够减商够减商1 1不够减商不够减商0 0够减商够减商0 0不够减商不够减商1 1(r r、Y Y同号同号)(r r、Y Y异号异号)(r r、Y Y异号异号)(r r、Y Y同号同号)够减够减商商1 1不够减商不够减商0 0够减商够减商0 0不够减不够减商商1 1(r r、Y Y同号同号)(r r、Y Y异号异号)(r r、Y Y异号异号)(r r、Y Y同号同号)(r r、Y Y同号同号)(r r、Y Y异号异号)(r
49、r、Y Y异号异号)(r r、Y Y同号同号)够减够减商商1 1不够减不够减商商0 0够减够减商商0 0不够减不够减商商1 1上商规则上商规则:Q Qi i=Sr=Sri iS SY Y余数与除数同号商余数与除数同号商1 1,异号商,异号商0 0。3.1.4.2补码不恢复余数除法补码不恢复余数除法3.3.算法算法r ri i补补与与Y Y补补同号,同号,则则Q Qi i补补为为1 1,第第i+1i+1步作步作2 2r ri i补补-Y-Y补补;r ri i补补与与Y Y补补异号,异号,则则Q Qi i补补为为0 0,第第i+1i+1步作步作2 2r ri i补补+Y+Y补补。4.4.求商符求商
50、符令令X X补补 =r r0 0补补r r0 0补补与与Y Y补补同号:同号:Q Q0 0补补=1=1异号:异号:Q Q0 0补补=0=0与实际商与实际商符相反符相反商符商符3.1.4.2补码不恢复余数除法补码不恢复余数除法5.5.商的校正商的校正X X补补Y Y补补=(1+2 +2 =(1+2 +2 QiQi补补)+)+2 2 r rn n补补Y Y补补-n-in-1i=0-n商商余数余数=Q=Q0 0.Q.Q1 1Q Q2 2QQn-1n-1求求n-1n-1位商位商(假商假商)(1)2 (1)2 QiQi补补n-1i=0-i(2)2(2)2-n第第n n位商位商(末位商末位商)恒置恒置1