《【教学课件】第五章运算方法和运算器.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第五章运算方法和运算器.ppt(106页珍藏版)》请在三一办公上搜索。
1、第五章 运算方法和运算器,本章着重讨论两个大问题:运算方法:即计算机中数值数据的运算规则 加减法(定点,浮点)(补码为重点)移位运算 乘除法(定点,浮点)(难点)逻辑运算运算器的基本结构和工作原理:着重讨论运算规则的具体物理实现(难点),规则,第五章 运算方法和运算器,5.1 定点加减运算 原码加减法原码加减运算规则(P94):要考虑符号和数值两部分同号相加和异号相减:数值部分相加,结果的符号取被加(减)数符号;异号相加和同号相减:数值部分相减,结果的符号取绝对值大的数的符号,但数值部分相减,要将减数变补,变为加法进行。对于定点机,两数同号相加和异号相减,结果可能溢出,须作溢出判断。一般机器溢
2、出后,提示溢出信息,然后停机。原码一般不用来做加减运算,而多用来做乘除运算,做加减运算时,多用补码。,第五章 运算方法和运算器,5.1 定点加减运算 补码加减法运算(重点)引入补码后,不仅减法能变成加法,而且符号位能同数值位一样参与加运算,这样可以大大简化运算器的结构。1、补码加减运算规则 参加运算的两个操作数均用补码表示;符号位作为数的一部分参加运算;若做加法,则两数直接相加;XY补=X补Y补 若做减法,则将被减数与减数的机器负数相加;XY补=X补Y补(mod 2,一位符号位))运算结果用补码表示。,第五章 运算方法和运算器,2.变补的概念:对所有二进制位(包括符号位)均取反,然后在末尾在加
3、1已知Y补,求Y补=Y补变补的方法是:对Y补,包括符号位在内,各位取反,末位加1。-Y补被称为Y补的机器负数,由Y补求-Y补的过程称为对Y补变补(求补),补码:一个负数由原码表示转换成补码表示时 符号位是不变的,仅对数值位的各位变反,末尾加“1”。变补:则不论这个数的真值是正是负,一律连同符号位一起变反,末尾加1。Y补表示的真值如果是正数,则变补后-Y补所表示真值变为负数,反之亦然。例如:Y补=1.01101 Y补=0.10011 3、溢出判断一般用双符号位进行判断:符号位00,表示正数,符号位11,表示负数结果的符号位为01时,称为上溢;结果的符号位为10时,称为下溢,第五章 运算方法和运算
4、器,例1:X=0.0101 Y=-0.1001 求XY=?解:X补=00.0101 Y补=11.0111-Y补=00.1001,两符号位相同,无溢出,X+Y补 11.1100,X-Y补 00.1110,X+Y=-0.0100,X-Y=+0.1110,第五章 运算方法和运算器,例2:X=0.1011 Y=0.1001 求XY=?解:X补=00.1011 Y补=00.1001-Y补=11.0111,两符号位相异,正溢出第一符号位为正确符号,X+Y补 01.0100,X-Y补 100.0010,X+Y=溢出,X-Y=+0.0010,两符号位相同,无溢出,第五章 运算方法和运算器,例3:X=-0.10
5、11 Y=-0.1001 求XY=?解:X补=11.0101 Y补=11.0111-Y补=00.1001,两符号位相异,负溢出第一符号位为正确符号,X+Y补 110.1100,X-Y补 11.1110,X+Y=溢出,X-Y=-0.0010,两符号位相同,无溢出,第五章 运算方法和运算器,总结:1.用模4补码进行加法运算,结果的两符号位 相异时,表示溢出;01正溢出、10 负溢出;相同时,表示不溢出2.模4补码相加的结果,不论溢出与否,第一符号位始终指示正确的符号建议:以模4补码做习题!,第五章 运算方法和运算器,练习:求XY=?1.X=0.1001 Y=-0.1100 X+Y=-0.0011
6、X-Y 溢出2.X=-0.0110 Y=0.1101 X+Y=0.0111 X-Y 溢出3.X=-0.1010 Y=-0.1001 X+Y 溢出 X-Y=-0.0001,第五章 运算方法和运算器,三、反码加减法运算 1、反码加减运算规则 参加运算的两个操作数均用反码表示;符号位作为数的一部分参加运算;若做加法,则两数直接相加;X反+Y反=X+Y反 若做减法,则将被减数与连同符号位一起变反后的减数相加;X反+-Y反=X-Y反 运算时如果符号位产生进位,则在末位加1,成为循环进位;运算结果用补码表示。对于补码:,X+Y补 100.1011,第五章 运算方法和运算器,三、反码加减法运算 2、说明:反
7、码加法,规则同补码加法,但若符号位有进位,需将此进位加到末位循环进位 由Y反如何求-Y反?对Y反,包括符号位,各位求反。,第五章 运算方法和运算器,例1:X=0.1101 Y=-0.0010 用反码规则求XY=?解:X反00.1101 Y反11.1101-Y反00.0010,X+Y反 100.1010,X-Y反 00.1111,X+Y=0.1011,X-Y=0.1111,第五章 运算方法和运算器,例2:X=0.1011 Y=-0.0101 用反码规则求XY=?解:X反00.1011 Y反11.1010-Y反00.0101,X+Y反 100.0101,X-Y反 01.0000,X+Y=0.011
8、0,X-Y=溢出,第五章 运算方法和运算器,练习:1、X=-0.1100 Y=-0.0010 用反码规则求XY=?解:X反11.0011 Y反11.1101-Y反00.0010,X-Y反 11.0101,X+Y=-0.1110,X-Y=-0.1010,X+Y反 111.0000,第五章 运算方法和运算器,练习:2、X=-0.1101 Y=0.0110 用反码规则求XY=?解:X反11.0010 Y反00.0110-Y反11.1001,X-Y反 110.1011,X+Y=-0.0111,X-Y=溢出,X+Y反 11.1000,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法1.溢出的产
9、生 在补码加减运算中,有时会遇到这样的情况:两个正数相加,而结果的符号位却为1(结果为负);两个负数相加,而结果的符号位却为0(结果为正)。,例1:设:X=1011B=11D,Y=111B=7D 则:X补=0,1011,Y补=0,0111 有:0,1 0 1 1+0,0 1 1 1 1,0 0 1 0 得出结果:X+Y补=1,0010,X+Y=-1110B=-14D 两正数相加结果为-14D,显然是错误的。,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法1.溢出的产生 在补码加减运算中,有时会遇到这样的情况:两个正数相加,而结果的符号位却为1(结果为负);两个负数相加,而结果的符号
10、位却为0(结果为正)。,例2:设:X=-1011B=-11D,Y=-111B=-7D 则:X补=1,0101 Y补=1,1001 有:1,0 1 0 1+1,1 0 0 1 0,1 1 1 0 得出结果:X+Y补=0,1110,X+Y=1110B=14D 两负数相加结果为14D,显然也是错误的。,原因:在于两数相加之和的数值已超过了机器允许的表示范围。字长为n+1位的定点整数(其中一位为符号位),采用补码表示:当运算结果大于2n-1 或小于-2n时,就产生溢出。设参加运算的两数为X、Y,做加法运算。若X、Y异号,不会溢出。若X、Y同号,运算结果为正且大于所能表示的最大正数或运算结果为负且小于所
11、能表示的最小负数(绝对值最大的负数)时,产生溢出。溢出分为2种:正溢和负溢。,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法1.溢出的产生 在补码加减运算中,有时会遇到这样的情况:两个正数相加,而结果的符号位却为1(结果为负);两个负数相加,而结果的符号位却为0(结果为正)。,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 2.溢出检测方法 采用一个符号位判断采用一个符号位加法运算时检测溢出的方法:两正数相加,结果为负表明产生正溢;即当Xs=Ys=0,Ss=1时,产生正溢。两负数相加,结果为正表明产生负溢。即当Xs=Ys=1,Ss=0时,产生负溢。因此可得出加法运算时溢
12、出的判断条件为:溢出=XsYsSs+XsYsSs采用一个符号位减法运算时检测溢出的方法:两数相减,只有X,Y异号时才可能溢出;因此可得出减法运算时溢出的判断条件为:溢出=XsYsSs+XsYsSs,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 2.溢出检测方法 采用进位位判断两正数相加,当最高有效位产生进位(C1=1)而符号位不产生进位(Cs=0)时,发生正溢;两负数相加,当最高有效位没有进位(C1=0)而符号位产生进位(Cs=1)时,发生负溢。溢出的判断条件为:溢出=CsC1+CsC1=CsC1,例1:设:X=1011B=11D,Y=111B=7D 则:X补=0,1011,Y补
13、=0,0111 有:0,1 0 1 1+0,0 1 1 1 1,0 0 1 0,C1=1,Cs=0,例2:设:X=-1011B=-11D,Y=-111B=-7D 则:X补=1,0101 Y补=1,1001 有:1,0 1 0 1+1,1 0 0 1 0,1 1 1 0,C1=0,Cs=1,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 2.溢出检测方法 采用变形补码(双符号位补码)判断变形补码定义:小数“变形补码”的定义为:X补=整数“变形补码”的定义为:X补=(设字长为:n+1位)变形补码的性质:当-1X1时,数X的“模4补码”的两个符号位相同,00表示正号,11 表示负号,其数
14、值位与补码相同。当符号位为01或10时,表示数值溢出:为01时表示两正数之和大于等于1的情况,称为数值“上溢”;为10 时表示两负数之和小于-1的情况,称为数值“下溢”。“模4补码”表示中,0有唯一的补码:00,000000,第五章 运算方法和运算器,5.2 补码的溢出判断与检测方法 2.溢出检测方法 采用变形补码(双符号位补码)判断双符号位的含义如下:Ss1Ss2=00 结果为正数,无溢出 Ss1Ss2=11 结果为负数,无溢出 Ss1Ss2=01 结果正溢 Ss1Ss2=10 结果负溢 例如:字长为5位,数的表示范围为-1615,采用变形补码(双符号位)运算,则有:练习:11D+5D-11
15、D+(-5D),11+7=18(正溢)0 0,1 0 1 1+0 0,0 1 1 1 0 1,0 0 1 0,-11+(-7)=-18(负溢)1 1,0 1 0 1+1 1,1 0 0 1 1 0,1 1 1 0,溢出的判断条件为:溢出=Ss1Ss2,第五章 运算方法和运算器,5.3 移位运算和舍入操作带符号数的移位操作 意义移位运算是计算机中最基本、最常见的运算操作之一,任何计算机都含有移位指令。逻辑移位:逻辑移位的对象是没有数值含义的一组二进制代码,因此移位时不必考虑符号问题,左移、右移空位都补0。算术移位:寄存器中带符号数的移位,移位时,符号位保持不变,仅数量变化。计算机中的字长固定,左
16、、右移时,出现空位怎么办?左移:x=2x 右移:x=,下面仅讨论算术移位,第五章运算方法和运算器,2.算术移位规则前提:移位后,符号位保持不变 正数正数的符号位为0,且x原=x反=x补(x 0)故进行算术移位时,出现的空位均添补0。正数:左移、右移都补0 x原=0.1001 2x原=0.0010 x反=0.0011 1/2x反=0.0001 x补=0.1001 2x补=0.0010,第五章 运算方法和运算器,负数原码除符号位外,原码的数值部分与真值相同,故移位后都补0。x原=1.0111 2x原=1.1110 1/2x原=1.0011反码除符号位外,反码的数值部分与原码相反,故移位后都补1x反
17、=1.0111 2x反=1.1111 1/2x反=1.1011,第五章运算方法和运算器,补码x补=1.1001 x原=1.0111 x反=1.1000 x补=1.0111000 x原=1.1001000 x反=1.0110111x补=1.1100010 x原=1.0011110 x反=1.1100001分析发现:补码由低位向高位出现第一个“1”的左边各位与反码同,从“1”开始的右边各位与原码同。补码规则(负数):左移:补0,同原码 右移:补1,同反码,注意:左移时,当数值最高位为:原码(1)、反码和补码(0)时,结果溢出;右移时,当数值最低位为:原码(1)和补码(1)、反码(0)时,结果不会溢
18、出,但是数值变小;,第五章运算方法和运算器,移位功能的实现,注意:上图为第i位的一位逻辑电路左移时,相当于乘以2,控制信号2FL有效右移时,相当于除以2,控制信号2/FL有效不移位时,控制信号FL有效,第五章 运算方法和运算器,、带符号数的舍入操作在算术移位时,由于硬件的限制,会失去一定的位数,造成一些误差,为减小误差,就要进行舍入操作。恒舍(切断):保留p位 多余q位全部舍去冯诺依曼舍入法(末位恒置1)0舍1入法ROM舍入法(查表法,P104),第五章 运算方法和运算器,5.4 基本运算的实现 一、加法器 计算机中最基本的运算部件是加法器。通常,加法器再配以其他必要的逻辑电路就可以进行计算机
19、中的一些基本运算。1.全加器三个输入量:操作数Ai和Bi、低位传来的进 位Ci-1,两个输出量:本位和Si、向高位的进位Ci。,全加器的逻辑表达式为:Si=AiBiCi-1 Ci=AiBi+(AiBi)Ci-1,第五章 运算方法和运算器,5.4 基本运算的实现 一、加法器 2.串行加法器在串行加法器中,只有一个全加器,数据逐位串行送加法器进行运算。如果操作数长n 位,加法就要分n次进行,每次只能产生一位和。串行运算器特点:所用元器件少(一位全加器),但速度极低,因此,现在用的不多,现在广泛使用的是并行运算器。,第五章 运算方法和运算器,5.4 基本运算的实现 一、加法器 3.并行加法器其位数的
20、多少取决于机器的字长,数据的各位同时运算。并行加法器特点:虽然操作数的各位是同时提供的,但低位运算所产生的进位有可能会影响高位的运算结果。也可以说并行加法器的最长运算时间主要是由进位信号的传递时间决定的。提高并行加法器速度的关键是尽量加快进位产生和传递的速度。,补码加减运算器如下图,第五章 运算方法和运算器,5.4 基本运算的实现 二、并行加法器进位的产生和传递并行加法器的位数:取决于机器的字长,和操作数的位数相同;并行加法器的速度:并行加法器的最长运算时间主要是由进位信号的传递时间决定的。提高并行加法器速度的关键是尽量加快进位产生和传递的速度。进位链:各级进位间存在一个由低位向高位的传递关系
21、,这种进位信号的传递结构进位链。(各级进位信号,逐级串联成一条链)1).全加器的函数表达式 Si=Ai Bi Ci-1 Ci=AiBi+(Ai+Bi)Ci-1=Gi+PiCi-1,第五章 运算方法和运算器,Ci=AiBi+(Ai+Bi)Ci1=Gi+PiCi-1 Gi=AiBi 名称:进位产生函数、本地进位、绝对进位含义:只有本位两输入全1时,才产生向高位的进位。(进位仅与本位有关,与低位无关)Pi=Ai+Bi 名称:进位传送函数、传送条件、跳跃条件含义:只要本位两输入有一个为1时,低位来的进位就能传送到高位。,第五章 运算方法和运算器,2).进位信号的传送进位链串行进位链(行波进位链)进位逐
22、级形成,每一级的进位直接依赖于前一级的进位 C1=A1B1+(A1+B1)C0 C2=A2B2+(A2+B2)C1 C2要等C1形成后才能产生 Cn=AnBn+(An+Bn)Cn-1 Cn要等Cn-1形成后才能产生,第五章 运算方法和运算器,串行进位并行加法器的特点:电路较节省,但严重影响着加法器的速度;进位时间:Ci=AiBi+(Ai+Bi)Ci-1=Gi+Pi Ci-1若全部用与门和或门来构造加法器,每级门延迟为1ty,n位字长,不考虑Gi、Pi的形成时间,由C0产生后到Cn产生共需2nty.为什么?因为每一级加法器的进位延迟时间是2ty改进:1)减少门的级数 2)采用高速进位元件,第五章
23、 运算方法和运算器,并行进位链(理想进位链。)Gi=AiBi Pi=Ai+Bi C1=G1+P1C0 C2=G2+P2C1=G2+P2G1+P2P1C0 C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0 上述各式中所有各位的进位均不依赖于低位的进位,各位的进位可以同时产生。,第五章 运算方法和运算器,用与门和或门实现的并行进位链(CLA)电路。每级门延迟1ty,从C0Cn的最长延迟时间共需2ty。,第五章 运算方法和运算器,C0、G、P 形成后,最多只有两级门的延迟即可形成Cn,是速
24、度最快的一种进位链。n位字长,Cn产生共需2ty.但此方案Cn的逻辑表达式会变得越来越长,这使得电路结构变得很复杂,完全采用并行进位是不现实的,故称为理想的进位链。优点:速度快(各级进位信号几乎同时产生)缺点:位数增多,扇入系数太大,无法完全实现。,第五章 运算方法和运算器,分组并行进位方式单级先行进位方式:将n位加法分组,组内用并行进位链,组间用串行进位链。(组内并行,组间串行)例如:利用4位先行进位电路和求和电路可以构成4位的先行进位加法器。则16位加法器,可分4组,4位/组就可用4个4位的先行进位加法器构成。如图:P103图5-6,组内:并行进位,组间:串行进位特点:这种方案,速度高,但
25、线路相对串行进位复 杂,成本高。,第五章 运算方法和运算器,分组并行进位方式多级先行进位方式:(组内并行,组间并行)首先对第一组的最高进位位C4有:C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0=G*1+P*1C0 同理:(P104)对第二组,第三组,第四组的最高进位位C8、C12、C16有:C8=G2*+P2*C4=G2*+P2*G1*+P2*P1*C0C12=G3*+P3*G2+P3*P2*G1*+P3*P2*P1*C0C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0,第五章 运算方法和运算器,G*i、T*
26、i如何形成?,G*1=G4+P4G3+P4P3G2+P4P3P2G1,P*1=P4P3P2P1,第五章 运算方法和运算器,5.补码加减法运算器(P105),第五章 运算方法和运算器,第五章 运算方法和运算器,补码加法:XF、YF、FX、CPX,Y寄存器,X寄存器,加法器,FX,CPX,CPX,第五章 运算方法和运算器,补码减法:XF、YF、1F、FX、CPX,Y寄存器,X寄存器,加法器,FX,CPX,CPX,1F,第五章 运算方法和运算器,5.5 定点乘法运算乘法运算是计算机中常用的运算,过去的计算机中,没有专门的乘法器。乘法运算要靠软件编程来实现。但现在随着LSI和VLSI应用的普及以及价格
27、的下降,乘法运算已做成了标准部件乘法器。,一般来讲,做乘除法运算,用原码比用补码简单,但有的机器,数据是用补码表示的,为避免码制间的频繁转换,乘除也用补码来做。,乘法,第五章 运算方法和运算器,重点,难点,重点,难点,原码乘法一、原码一位乘用原码运算,数据的符号不能同数值位一同参加运算,而需单独处理,两原码表示的数相乘,其结果的符号是两数符号的异或。0.1101(-0.1011)=?Ps=xs ys=1,原码运算符号位要单独处理,第五章 运算方法和运算器,手算乘法:0.1101(-0.1011)=-0.10001111 0.1101 0.1011 0.1101 部分积 0.1101 部分积 0
28、.0000 部分积 0.1101 部分积 0.10001111 乘积,于是,想改进上述方法,达到以下目的:n位乘法,只用n位加法器 n位乘法,只用n位寄存器来存放结果,可以看出:手算乘法是通过移位和加法来实现的。缺点:n位乘法,需n个部分积相加得乘积,而全加器只有三个输入端,故实现不了。n位乘法,乘积2n位,要用2n位的寄存器来存放积,造成浪费.,第五章 运算方法和运算器,原码一位乘法的规则:参加运算的操作数取其绝对值;令乘数的最低位为判断位,若为“1”,加被乘数,若为“0”,不加被乘数(加0);累加后的部分积以及乘数右移一位;重复n次和操作;(直到乘数位全部乘完为止)符号位单独处理,同号为正
29、,异号为负;乘法运算需要三个寄存器:A寄存器:部分积与最后乘积的高位部分,初值为0;B寄存器:被乘数X;C寄存器:乘数Y,运算后C寄存器中不再需要保留乘数,改为存放乘积的低位部分;,n次加法,n次移位,第五章 运算方法和运算器,原码一位乘举例,部分积A,乘数C,被乘数B 0.1101,A+B,2-1(A+B),2-1 C,结果:A积的高位 C积的低位,xy原1.10001111,xy0.10001111,判断,判断,判断,判断,加法,右移,加法,加法,加法,右移,右移,右移,练习:仿照计算机的计算过程,用原码计算X=0.1101和Y=-0.0111两个定点小数的乘积。,练习:仿照计算机的计算过
30、程,用原码码计算X=0.1101和Y=-0.0111两个定点小数的成绩。部分积A 乘数C 被乘数B 0.1101(乘积的高位部分)(乘积的低位部分)说明 00 0000 0 1 1 1 起始情况+)00 1101 乘数最低位为1,加X 00 1101 00 0110 1 0 1 1 1(丢失)右移部分积和乘数+)00 1101 乘数最低位为1,加X 01 0011 00 1001 1 1 0 1 1(丢失)右移部分积和乘数+)00 1101 乘数最低位为1,加X 01 0110 00 1011 0 1 1 0 1(丢失)右移部分积和乘数+)00 0000 乘数最低位为0,加0 00 1011
31、00 0101 1 0 1 1 0(丢失)右移部分积和乘数符号位为负,数值位为01011011。,二、原码一位乘流程图,三、原码一位乘法运算器框图,第五章 运算方法和运算器,5.5.2 补码一位乘用补码做加减运算很方便,做乘法(包括除法)却是原码很方便,既然这样为何又有补码乘法呢?主要为了避免频繁的码制转换。被乘数x,x补xs.x1xn 乘数y,y补ys.y1yny0.y1yn校正法x任意,y0时,-同原码乘法,移位按补码规则进行,结果不用校正;x.y补 x补.y补x任意,y0时,-同原码乘法,移位按补码规则进行,结果需要校正;x.y补 x补.(0.y1yn)+-x补校正法统一表达式:x.y补
32、=x补.(0.y1yn)+ys.-x补 P108,第五章 运算方法和运算器,举例:X=-0.1101 Y=-0.1011即:X补=11.0011 Y补=11.0101(-X)补=00.1101求XY补,注意!?,5.5.2 补码一位乘,校正法,第五章 运算方法和运算器,校正,5.5.2 补码一位乘比较法(Booth乘法):(适用情况:x,y都任意)算法推导:将校正法统一表达式:x.y补=x补.(0.y1yn)+ys.-x补展开,得到书中列出的递推关系:Z0补=0 Z1补=2-1Z0补+(yn+1-yn)x补 Z2补=2-1Z1补+(yn-yn-1)x补.Zn补=2-1Zn-1补+(y2-y1)
33、x补从而得到:xy补=Zn补+(y1-ys).x补-补码一位乘比较法 其中:Z0补为部分积,Z1补Zn补位各次求得的累加并右移之后的部分积。,第五章 运算方法和运算器,补码一位乘注意事项,比较法(Booth算法):(适用情况:x,y都任意)算法规则:相乘时,被乘数取双符号位,乘数取单符号位并参加运算。乘法开始前,部分积置全0,乘数末位增加附加位yn1=0。比较yn 和yn1,决定如何运算 yn yn1(yi1-yi)值 操作 0 0;0 全0,结果右移一位;0 1;1 x补,结果右移一位;1 0;-1-x补,结果右移一位;1 1;0 全0,结果右移一位。重复 n1 次,最后一次不移位 得乘积
34、2n2位,其中含两位符号位,补码一位乘举例,例:x-0.1011,y-0.1101 求 xy?(利用比较算法),解:x补=11.0101,-x补00.1011 y补1.0011,xy补=00.10001111,xy=0.10001111,比较yn 和yn1,决定如何运算 yn yn1 0 0;全0,结果右移一位;0 1;x补,结果右移一位;1 0;-x补,结果右移一位;1 1;全0,结果右移一位。重复 n1 次,最后一次不移位 得乘积 2n2位,其中含两位符号位,部分积 乘数 附加位,判断,判断,判断,判断,加法,右移,加法,加法,加法,右移,右移,右移,判断,加法,不移位,练习:X补=0.1
35、001 Y补=1.1011 求XY补 解:-X补=1.0111补码乘法运算过程如下:所以得 XY补=1.11010011,3.2.2 补码乘法,第五章 运算方法和运算器,3.2.2 补码乘法,+)1 1 0 1 1 1,+)0 0 1 0 0 1,+)1 1 0 1 1 1,1 1 1 1 0 1,1 1 1 0 1 0,1 1 1 1 0 1,1 1 1 0 1 1,1 1 0 1 1 1,0 0 0 0 1 1,0 0 0 1 1 0,0 0 0 0 0 0,右移一位,得部分积Z1补,右移一位得Z3补,右移一位得Z4补,YnYn+1=10,+-X补,YnYn+1=11,+0,右移一位得Z2
36、补,YnYn+1=01,+X补,YnYn+1=10,+-X补,YnYn+1=11,+0,设部分积初值Z0=0,附加位Yn+1=0,操作说明,乘 数B,附加位Yn+1,部分积A,1 1 0 1 1 0,1 1 1 0 1 1 0,1 1 1 1 0 1 1,0 1 1 1 1 0 1,0 0 1 1 1 1 0,低 位 积,高 位 积,补码乘法运算过程,第五章 运算方法和运算器,+)0 0 0 0 0 0,1 1 1 0 1 1,+)0 0 0 0 0 0,1 1 1 1 0 1,0 0 1 1,最后一步不移位,5.5.3 原码二位乘在原码一位乘中,是一位一拍来运算的,两个n位数相乘,需进行n次
37、加法,n位移位。为提高乘法速度,进行二位一乘。原码两位乘法和原码一位乘法一样,符号位单独处理。乘数的相邻两位Yn-1 Yn有四种状态,决定进行何种操作。也可以说把像原码一位乘一样把Yn-1 Yn看成一位则有:,前两种情况好处理,2X可将X左移一位,+3X实现起来较难,如何处理?,一般采取:3X=4X-X,Yn-1 Yn 00,相当于0X,部分积0,右移两位。Yn-1 Yn 01,相当于1X,部分积X,右移两位。Yn-1 Yn 10,相当于2X,部分积2X,右移两位。Yn-1 Yn 11,相当于3X,部分积3X,右移两位。,第五章 运算方法和运算器,3X=4X-X,第一拍只做-X,部分积右移二位
38、,并用一个记账触发器记下欠账,欠4X,下一拍再补上4X即可。本次累加(做-X)后部分积要右移两位,因而下一次实际上只需执行+X,就等于完成了+4X操作,原因在于:从相对关系来看,部分积要右移两位后加X,相当于X左移了两位后变成了4X后加(做-X)后的部分积。例如:部分积:1011 X:1010,部分积右移2位后加X为:1011+1010 110011,X左移两位后加部分积为 1010+1011 110011,第五章 运算方法和运算器,判断位 yn-1ynCj 所进行的操作 0 0 0;全0,部分积右移两位,Cj 0 0 0 1;x,部分积右移两位,Cj 0 0 1 0;x,部分积右移两位,Cj
39、 0 0 1 1;2x,部分积右移两位,Cj 0 1 0 0;2x,部分积右移两位,Cj 0 1 0 1;x,部分积右移两位,Cj 1 1 1 0;-x,部分积右移两位,Cj 1 1 1 1;全0,部分积右移两位,Cj 1,第五章 运算方法和运算器,原码二位乘规则:参加运算的操作数取其绝对值;符号位单独处理PsXsYs;欠帐触发器Cj初始值为0;根据乘数的最低两位Yn-1Yn和欠帐触发器Cj的值决定每次应执行的操作;-|X|通过+|X|变补实现,所以右移按补码规则进行。当乘数的数值位为n位(不连符号位),应作n/2次累加和移位,如有欠帐,再作一次加法。,第五章 运算方法和运算器,原码二位乘注意
40、事项:符号位单独处理,Zs=Xs Ys。运算时,部分积取三位符号位,移位时,据最高符号位的指示进行。求-x补,实际是求-|x|补。乘数数值部分 n 位,n为偶数时,乘数取二位符号位,共需做(n/2+1)累加和n/2移位,最后一次不移位;n为奇数时,乘数取一位符号位,共需做(n+1)/2累加和移位,最后一次只移一位;最后一次只移一位。,第五章 运算方法和运算器,原码二位乘举例,例1:x-0.1001,y-0.1101 求 xy?,解:Zs=11=0,|x|0.1001-|x|补1.0111,xy0.01110101,xy原=0.01110101,共做n/2+1=3次加,n/2=2次移位,例2:x
41、=-0.11011,y=0.11111 求 xy=?,解:Zs=1,2|x|=001.10110-|x|补=111.00101,xy=-0.1101000101,xy原=1.1101000101,原码二位乘举例,共做(n+1)/2=3次加,(n+1)/2=3次移位,最后一次仅移一位,原码两位乘问题,原码两位乘,最后一次会不会欠帐?(cj1?)因符号位单独处理,只数值部分参加运算,故乘数的符号位为0。两位符号位:00.0;00.1;一位符号位:0.0 0.1,全0,部分积右移两位,0Cj,x,部分积右移两位,0Cj,0;全0,部分积右移两位,0Cj 1;x,部分积右移两位,0Cj,0;x,部分积
42、右移两位,0Cj 1;2x,部分积右移两位,0Cj,无符号位:还清欠账,即最后一步若Cj位上为1,则应右移两位再加x完成计算;,练习,x-0.11101,y-0.11101 求 xy?,解:zs=0,2|x|=001.11010-|x|补=111.00011,xy=0.1101001001,xy原=0.1101001001,补码两位乘补码两位乘法规则如下:(推导公式见P111)参加运算的数用补码表示;符号位参加运算;乘数最低位后增加一位附加位Yn+1,初值为0;根据乘数的最低三位Yn-1YnYn+1的值决定每次应执行的操作;移位按补码右移规则进行。,Yn-1 Yn Yn+1(Yn+1+Yn-2
43、Yn-1)值 操作 0 0 0 0+0,右移2位 0 0 1 1+X补,右移2位 0 1 0 1+X补,右移2位 0 1 1 2+2X补,右移2位 1 0 0-2+2-X补,右移2位 1 0 1-1+-X补,右移2位 1 1 0-1+-X补,右移2位 1 1 1 0+0,右移2位,第五章 运算方法和运算器,第五章 运算方法和运算器,补码两位乘注意:1、被乘数取三位符号位2、乘数数值部分位数n为奇数,乘数取一位符号位,共需做(n+1)/2累加和移位,最后一次只移一位;3、乘数数值部分位数n为偶数,乘数取二位符号位,共需做(n/2+1)累加和n/2移位,(最后一次不移位);(满足二位一移)4、得积
44、2n+1位,含1位符号位。,补码两位乘举例(P112),例1:x0.0110011,y-0.0110010 求 xy?,解:x补=0.0110011-x补=1.1001101 y补=1.1001110,111.1100110 1 0110011 1;1/4z补,111.1100110 1 0110011 1,111.1111001 1 0101100 1;1/4z补,000.0101100 1 0101100 1,000.0001011 0 0101011 0;1/4z补,补码两位乘举例,例1:x0.0110011,y-0.0110010 求 xy?,000.0001011 0 0101011
45、 0,111.1110110 0 0010101 1;1/2z补,乘数位是奇数位,取一位符号位,最后一次只移一位,补码两位乘举例,例2:x-0.10011011,y-0.10001011 求 xy?,解:x补=1.01100101-x补=0.10011011 y补=1.01110101,111.01100101 11.01110101 0,111.11011001 01 11011101 0;1/4z补,111.00111110 01 11011101 0,111.11001111 10 01110111 0;1/4z补,000.01101010 10 01110111 0,000.00011
46、010 10 10011101 1;1/4z补,补码两位乘举例,例2:x-0.10011011,y-0.10001011 求 xy?,000.00011010 10 10011101 1,110.11100100 10 10011101 1,乘法位是偶数位,取二位符号位,最后一步不移位,111.10111001 00 10100111 0,000.01010100 00 10100111 0,xy0.,原码、补码乘法总结(P112),若n,m分别为被乘数和乘数的数值位数,则不管怎么移位,最后满足:被乘数m位,乘数n位,积m+n位 乘数的符号位必须去掉,5.6 定点除法运算,除法:,溢出,定点除
47、法,按照处理方式,按照数的表示方法,同时,|除数|不为0,5.6 定点除法运算,一、原码除法1.恢复余数法 手算除法:x=-0.10010 y=0.11011 上商:0.10101 x/y=-0.10101 余数:0.010012-5,5.6 定点除法运算,手算除法,可以用心算的办法比较余数和除数的大小,从而确定是商0还是商1,计算机则不行,它要以减法的方法来比较。减的结果若大于0,上商1;若小于0,上商0,然后将余数再恢复。规则:将被除数除数,结果大于0,商1,余数左移一位。结果小于0,商0,恢复余数,余数左移一位。重复上述操作,直至商的精度满足要求为止。,5.6 定点除法运算,注意:运算时
48、取双符号位,第一符号位指示是否够减(结果大于0),第一符号位为0,表示够减,为1,表示不够减。求-y补,实际是求-|y|补。符号位单独处理:,5.6 定点除法运算,例:x=-0.10010 y=0.11011 x/y=?|x|=0.10010|y|=0.11011-|y|补=1.00101|X|A,|Y|B,0C,00.10010 0.00000,+11.00101;|y|,11.10111 0.00000;判断:r0,上商 0,+00.11011;y,恢复余数,+11.00101;-y,01.00100 0.00000;2r(左移),00.01001 0.00001;判断:r0 上商 1,0
49、0.10010 0.00010;2r(左移),+11.00101;-y,11.10111 0.00010;判断:r0 上商 0,A C 说明,将被除数除数,结果大于0,商1,余数左移一位。结果小于0,商0,恢复余数,余数左移一位。,5.6 定点除法运算,11.10111,+00.11011;y,恢复余数,+11.00101;-y,01.00100 0.00100;2r(左移),00.01001 0.00101;判断:r0,上商 1,00.10010 0.01010;2r(左移),+11.00101;-y,11.10111 0.01010;判断:r0,上商 0,+00.11011;y,恢复余数,
50、01.00100 0.10100;2r(左移),00.01001 0.10101;判断:r0,上商 1,+11.00101;-y,商=0.10101 商原=1.10101 x/y=-0.10101 余=0.010012-5=0.10012-6,5.6 定点除法运算,从上例可以看出:当ri 0时,每次上商得到的余数,是前一次的余数左移一位再减除数得到的,即:当ri 0时,ri1=2ri-y。而当ri 0时,下次的余数是本次余数加除数,左移一位,再减除数,即:当ri 0时,ri1=2(ri+y)-y=2ri+y 由此可知:当r0时,可以不恢复余数,而将上次余数左移一位,再加上除数,得到余数,这就是