微机原理第三章(1).ppt

上传人:s****8 文档编号:68703098 上传时间:2022-12-29 格式:PPT 页数:60 大小:1.19MB
返回 下载 相关 举报
微机原理第三章(1).ppt_第1页
第1页 / 共60页
微机原理第三章(1).ppt_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《微机原理第三章(1).ppt》由会员分享,可在线阅读,更多相关《微机原理第三章(1).ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章第三章 运算方法与运算器运算方法与运算器一、定点加减法运算方法及实现一、定点加减法运算方法及实现在计算机中定点加减法运算基本上都是采用补码。因此这里只讨论补码的加减法运算。1 1、补码加减法运算方法、补码加减法运算方法、补码加减法运算方法、补码加减法运算方法对于补码加减法运算需要证明如下公式:X+Y补=X补+Y补X-Y补=X补+-Y补证明分四种情况,采用定义来证明。第三章第三章 运算方法与运算器运算方法与运算器例1:已知:X=-0.0625,Y=-0.75。求:X+Y,X-Y解:X=-0.0001Y=-0.1100 X原=1.0001 Y原=1.1100X补=1.1111 Y补=1.01

2、00-Y补=0.1100X补=1.1111 X补=1.1111 +Y补=1.0100 +-Y补=0.1100 -X+Y补=1.0011 X-Y 补=0.1011 X+Y原=1.1101 X-Y 原=0.1011 X+Y=-0.1101 X-Y=+0.1011 =-0.8125 =+0.6875第三章第三章 运算方法与运算器运算方法与运算器例2:已知:X=-20,Y=+9。求:X+Y,X-Y解:X=10100Y=01001 X原=110100 Y原=001001X补=101100 Y补=001001-Y补=110111X补=101100 X补=101100 +Y补=001001 +-Y补=110

3、111 -X+Y补=110101 X-Y 补=100011 X+Y原=101011 X-Y 原=111101 X+Y=-01011 X-Y=-11101 =-11 =-29第三章第三章 运算方法与运算器运算方法与运算器结论:结论:结论:结论:补码运算能将减法变为加法,是的运算器中只需一个加法器;补码加减法运算时,符号位与数码位一样参加运算,能自然得到结果的正确符号;补码小数的加减法运算以“2”为模,补码整数运算以“2n+1”为模,即符号位向更高位的进位自然丢失,不影响运算结果的正确性。2 2、定点加减法运算中的溢出问题、定点加减法运算中的溢出问题、定点加减法运算中的溢出问题、定点加减法运算中的

4、溢出问题“运算溢出”是指运算结果大于机器所能表示的最大正数或小于所能表示的最小负数。“运算溢出”只对带符号数的运算有效。第三章第三章 运算方法与运算器运算方法与运算器下面举例说明什么情况下会产生溢出。X补=0.1010 X补=1.0001 +Y补=0.1001 +Y补=1.0111 -X+Y补=1.0011 X+Y 补=0.1000从上述例子可以看出,两个正数相加,结果为负数;而两个负数相加,结果为正数,显然是错误的,其原因是由于运算产生了溢出;除此之外,正数减负数或负数减正数,也可能产生运算溢出。溢出是一种错误,计算机在运算过程中必须能发现这种错误,并进行必要的处理,否则将产生严重的后果。常

5、用的判溢出的方法有以下两种:采用变形补码判溢出;利用符号位采用变形补码判溢出;利用符号位进位信号判溢出。进位信号判溢出。第三章第三章 运算方法与运算器运算方法与运算器采用变形补码判溢出“变形补码”是采用2个符号位的补码,记作X补。上面的两个例子,若采用变形补码运算,结果为:例1:X补=00.1010例2:X补=11.0001 +Y补=00.1001 +Y补=11.0111 -X+Y补=01.0011 X+Y补=10.1000 例1中,运算结果的两位符号位为“01”,表示产生了正溢出。例2中,运算结果的两位符号位为“10”,表示产生了负溢出。不溢出时,两个符号位应相同,为“00”或“11”。第三

6、章第三章 运算方法与运算器运算方法与运算器结论:采用变形补码进行加减运算时,运算结果的两位符号位应相采用变形补码进行加减运算时,运算结果的两位符号位应相同;若两个符号位为同;若两个符号位为“00”,表示结果是一个正数,反之,表示结果是一个正数,反之,若为若为“11”,表示结果是负数;,表示结果是负数;若两个符号位不同,则表示运算产生了溢出,且左边一位表若两个符号位不同,则表示运算产生了溢出,且左边一位表示结果的正确符号,即若结果的两位符号位为示结果的正确符号,即若结果的两位符号位为“01”,表示,表示结果的正确符号应为正,即产生了正溢出。否则若结果的两结果的正确符号应为正,即产生了正溢出。否则

7、若结果的两位符号位为位符号位为“10”,表示结果的正确符号应为负,即产生了,表示结果的正确符号应为负,即产生了负溢出;负溢出;这种方法简单,容易实现,只要在两个符号位上增设一个半这种方法简单,容易实现,只要在两个符号位上增设一个半加器即可,但运算器要增加一位字长,或要降低一位运算精加器即可,但运算器要增加一位字长,或要降低一位运算精度。度。第三章第三章 运算方法与运算器运算方法与运算器利用符号位的进位信号判溢出对于带符号数,最高位是符号位,若将最高数码位向符号位的进位叫做“进位入”,记作Cn-1,而将符号位向向更高位的进位叫做“进位出”,记作Cn,则对上面的例子,有如下情形:例1:X补=0.1

8、010例2:X补=1.0001 +Y补=0.1001 +Y补=1.0111 -.-.-X+Y补=1.0011 X+Y补=0.1000 例1中,Cn=0,Cn-1=1,表示产生了正溢出;例2中,Cn=1,Cn-1=0,表示产生了负溢出。只有当Cn=Cn-1=0或Cn=Cn-1=1时,才表示无溢出。Cn=0Cn-1=1 Cn-1=0Cn=1第三章第三章 运算方法与运算器运算方法与运算器结论:可以由可以由CnCn-1来判断运算产生了溢出;来判断运算产生了溢出;这种方法不降低运算精度简单,只要增设一个半加器即可。这种方法不降低运算精度简单,只要增设一个半加器即可。即即 OF(溢出标志)(溢出标志)=C

9、nCn-1机器无法知道参加运算的操作数是否是带符号数,因此总是机器无法知道参加运算的操作数是否是带符号数,因此总是按带符号数处理,并判定是否产生溢出。因此,对无符号数按带符号数处理,并判定是否产生溢出。因此,对无符号数的加减运算,即使的加减运算,即使OF=1,也不表示产生了溢出。应由程序员,也不表示产生了溢出。应由程序员自己判定。自己判定。第三章第三章 运算方法与运算器运算方法与运算器3 3、补码加减法运算的实现、补码加减法运算的实现、补码加减法运算的实现、补码加减法运算的实现采用补码进行加减法运算只需一个加法器,采用串行进位方式的n位并行加法器的逻辑结构如图所示。FAFAFAFA Bn-1

10、An-1 Bn-2 An-2 B1 A1 B0 A0 Sn-1 Sn-2 S1 S0 溢出C1方式控制MM=0加M=1减Bn-1Cn-1Cn-2Bn-2B1C1C0B0并行加法器的逻辑结构第三章第三章 运算方法与运算器运算方法与运算器 并行加法器的要点:并行加法器的要点:n位并行加法器的主体是n位全加器FA,其进位信号由低位向高位逐位传送。两个n位的操作数A和B连同进位信号一起同时送到全加器的输入端,经过一定的运算时间,得到n位的运算结果S。最高的进位信号Cn-1和Cn-2的半加和用来判溢出。M是方式控制信号,M=0表示作加法运算(A+B),M=1表示作减法运算(A-B),这种情况下应将A补与

11、-B补相加;由于-B补=B补+1,电路中用各位用一个半加器实现对B补取反,在向末位+1(C-1=1)。全加器的结构加法器的运算速度(P32-33)第三章第三章 运算方法与运算器运算方法与运算器二、定点乘法运算及实现二、定点乘法运算及实现定点乘法运算与加减法运算不同,可采用原码,也可采用补码。原码乘法又有原码一位乘法和原码两位乘法;补码乘法也有补码一位乘法和补码两位乘法。1 1、原码一位乘法、原码一位乘法符号位单独运算,将两个操作数的绝对值相乘,最后给乘积冠以正确的符号的方法,称为“原码乘法”。每次取一位乘数与被乘数相乘,最后累加结果,称作“原码一位乘法”。第三章第三章 运算方法与运算器运算方法

12、与运算器原码一位乘法的操作过程与十进制乘法运算类似。例:已知X=+0.1101,Y=-0.1011,求Z=X*YX原=0.1101 Y原=1.1011Zf=Xf异或Yf=1然后将两个绝对值相乘,操作过程如下:0.1 1 0 10.1 0 1 1-0 1 1 0 1第1次部分积 0 1 1 0 1第2次部分积 0 0 0 0 0第3次部分积 +0 1 1 0 1第4次部分积-0.1 0 0 0 1 1 1 1第三章第三章 运算方法与运算器运算方法与运算器上述过程是手算,若在计算机中实现,则存在两个问题:一是n位数相乘,需2n位加法器,不合适;二是n次部分积一次累加,实现有困难。计算机的做法是:计

13、算机的做法是:每得到一次部分积,立刻与上次部分积相加,然后将每得到一次部分积,立刻与上次部分积相加,然后将结果右移一位,待结果右移一位,待n次次“相加右移相加右移”操作结束后,乘法操作结束后,乘法运算完成运算完成第三章第三章 运算方法与运算器运算方法与运算器同样以上述例子为例:部分积乘数0.0 0 0 00 1 0 1 1+X 0.1 1 0 1-0 1 1 0 10 1 0 1 10.0 1 1 01 0 1 0 1+X 0 1 1 0 1-1 0 0 1 11 0 1 0 10 1 0 0 11 1 0 1 0+0 0 0 0 0 0-0 1 0 0 11 1 0 1 00 0 1 0 0

14、1 1 1 0 1+X 0 1 1 0 1-1 0 0 0 11 1 1 0 10.1 0 0 01 1 1 1 0 结束第三章第三章 运算方法与运算器运算方法与运算器(16)可以看出,上例经过4次相加、右移操作,最后得到结果,再冠以正确的符号“1”,得到 Z原=1.10001111Z=-0.10001111结论:两个n位带符号的数相乘,需要一个n+1位的加法器,两个n+1位的寄存器,操作前分别存放部分积和乘数Y,操作后分别存放最后乘积的高位和低位,并要求这两个寄存器能连接起来一起进行右移操作。实现原码一位乘法的操作过程流程图及实现方法图见实现原码一位乘法的操作过程流程图及实现方法图见P35P

15、35。第三章第三章 运算方法与运算器运算方法与运算器(17)2、原码两位乘法、原码两位乘法采用原码两位乘法,可作为提高乘法运算速度的措施之一。如果从乘数的最低位开始每次取两位乘数与被乘数相乘得到一次部分积,那么两个n位数相乘只需要进行n/2次“相加右移”操作,这就是“原码两位乘法”的基本思想,即不需要增加任何硬件可使乘法运算速度提高一倍。原码两位乘法部分积的形成原码两位乘法部分积的形成原码一位乘法中,由于每次只取一位乘数,因此部分积的值很简单,即若Y0=0,则部分积为0;若Y0=1,则部分积为被乘数X。而原码两位乘法中每次要取两位乘数,因此部分积的值应有四种情况:Y1Y0新的部分积及其操作新的

16、部分积及其操作000,与上次部分积相加后,右移两位,与上次部分积相加后,右移两位01X,与上次部分积相加后,右移两位,与上次部分积相加后,右移两位102X,与上次部分积相加后,右移两位,与上次部分积相加后,右移两位113X,与上次部分积相加后,右移两位,与上次部分积相加后,右移两位第三章第三章 运算方法与运算器运算方法与运算器(18)上表中,前三种情况都容易实现,关键是如何得到3X的部分积。考虑到3X=4X-X,具体做法是:当两位乘数为“11”时,将“-X”与上次部分积相加,然后右移两位。“4X”的操作待进行高端的两位乘数相乘时再进行,先将高两位乘数加1,再确定本次部分积的内容,以完成“4X”

17、的操作,与上次“X”操作合起来,等效于“3X”操作。这种情况下,需要设置一个标志Cj,以确定参加本次运算的两位乘数是否要加1,于是形成了下面8种不同操作:第三章第三章 运算方法与运算器运算方法与运算器(19)Y1 Y0Cj操作过程操作过程000上次部分积上次部分积0后,右移两位,后,右移两位,Cj保持为保持为0010上次部分积上次部分积X后,右移两位,后,右移两位,Cj保持为保持为0100上次部分积上次部分积2X后,右移两位,后,右移两位,Cj保持为保持为0110上次部分积上次部分积X后,右移两位,后,右移两位,Cj 1001上次部分积上次部分积X,右移两位,右移两位,Cj 0011上次部分积

18、上次部分积2X后,右移两位,后,右移两位,Cj 0101上次部分积上次部分积X后,右移两位,后,右移两位,Cj保持为保持为1111上次部分积上次部分积0后,右移两位,后,右移两位,Cj保持为保持为1第三章第三章 运算方法与运算器运算方法与运算器(20)原码两位乘法的操作过程原码两位乘法的操作过程例:已知X=+0.11111101,Y=-0.01110001,求X*Y解:Zf=Xf异或Yf=0异或11|X|原=00.11111101|Y|原=00.01110001|X|补=00.11111101|2X|补=01.11111010-|X|补=11.00000011|Y|补=00.01110001

19、第三章第三章 运算方法与运算器运算方法与运算器(21)部分积部分积Yf Yf Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 Cj0 0 0.0 0 0 0 0 0 0 00 0.0 1 1 1 0 0 0 1 0+|X|0 0 0 1 1 1 1 1 1 0 1-0 0 0 1 1 1 1 1 1 0 10 0 0 1 1 1 0 0 0 10 0 0 0 0 1 1 1 1 1 10 1 0 0 0 1 1 1 0 0 0+00 0 0 0 0 0 0 0 0 0 0-0 0 0 0 0 1 1 1 1 1 10 1 0 0 0 1 1 1 0 00 0 0 0 0 0 0 1 1 1 1

20、1 1 0 1 0 0 0 1 1 1 0-|X|1 1 1 0 0 0 0 0 0 1 1-1 1 1 0 0 0 1 0 0 1 01 1 0 1 0 0 0 1 1 11 1 1 1 1 0 0 0 1 0 01 0 1 1 0 1 0 0 0 1 1+|2X|0 0 1 1 1 1 1 1 0 1 0-0 0 1 1 0 1 1 1 1 1 01 0 1 1 0 1 0 0 0 10 0 0.0 1 1 0 1 1 1 11 0 1 0 1 1 0 1 0 0 0第三章第三章 运算方法与运算器运算方法与运算器(22)|X|*|Y|补=00.0110111110101101|X|*|Y|

21、原=00.0110111110101101最后给结果冠以正确的符号,得:X*Y=-0.0110111110101101说明:说明:两个八位数相乘只需作两个八位数相乘只需作4次次“相加右移相加右移”操作操作直到操作操作直到Y1Y0Cj=000为止,若最后一次运算后为止,若最后一次运算后Cj仍为仍为1,则需要再进行一次,则需要再进行一次“X”操作,但不需再右移;操作,但不需再右移;由于由于“2X”操作,部分积有可能大于操作,部分积有可能大于2,因此部分积要用三位,因此部分积要用三位符号位,其中最高位代表部分积的正确符号;符号位,其中最高位代表部分积的正确符号;由于运算过程中有由于运算过程中有“X”

22、操作,因此整个操作过程应采用补码进操作,因此整个操作过程应采用补码进行部分积,右移时按补码右移的规则,即保持符号位不变;行部分积,右移时按补码右移的规则,即保持符号位不变;若乘数若乘数Y的数码位的位数的数码位的位数n为奇数,则可在被乘数和乘数的后边均为奇数,则可在被乘数和乘数的后边均附加一个附加一个“0”,使,使n仍保持为偶数,进行仍保持为偶数,进行n/2次相加右移操作,次相加右移操作,运算结果的最后两位运算结果的最后两位“0”无效。无效。第三章第三章 运算方法与运算器运算方法与运算器(23)补码一位乘法补码一位乘法原码乘法存在两个明显的缺点:一是符号位需要单独运算,最后需给运算结果冠以正确的

23、符号,这给运算带来麻烦;二是对于采用补码存储的机器,从存储器或寄存器中取得的是操作数的补码,需要先变成原码,再取其绝对值后才能进行原码乘法运算。将两个操作数的符号位和数码位一起参加乘法运算,能自然得到乘积的正确符号的乘法称作“补码乘法”。补码乘法也分为补码一位乘法和补码两位乘法。补码一位乘法有两种不同的实现方案:校正法和比较法。校正法的基本思想:X*Y补=X补*Y补+校正项其中校正项随X和Y的正负不同而有不同的取值,给操作带来不便。第三章第三章 运算方法与运算器运算方法与运算器(24)实际中较常采用的“补码一位乘法”,是由Booth夫妇提出来的“比较法”,因此又称作Booth法。Booth法的

24、操作过程:补码与真值的关系补码与真值的关系根据补码定义:根据补码定义:对于正数:对于正数:Y补补=Y=0.Y1 Y2.Yn (Y0=0)对于负数:对于负数:Y补补=2Y=1.Y1 Y2.Yn (Y0=1)Y=1.Y1 Y2.Yn-2=1+0.Y1 Y2.Yn-2=-1+0.Y1 Y2.Yn=-Y0+0.Y1 Y2.Yn于是于是 Y=-Y0+Y1*2-1+Y2*2-2+Yn*2-n=-Y0+(Y1*20+Y1*2-1)+(Y2*2-1+Y2*2-2)+(Yn*2-(n-1)-Yn*2-n)=(Y1-Y0)20+(Y2-Y1)2-1+(Yn+1-Yn)2-n=(Yi+1-Yi)2-i(i=1.n)

25、第三章第三章 运算方法与运算器运算方法与运算器(25)(2)证明公式证明公式 X*Y补补=X补补.*Y,证明从略。,证明从略。X*Y补补=X补补.*Y=X补补.*(Y1-Y0)20+(Y2-Y1)2-1+(Yn+1-Yn)2-n =X补补.*(Yi+1-Yi)2-i(i=1.n)上式中,上式中,(Yi+1-Yi)只有四种状态,即:只有四种状态,即:0-0=0;0-1=-1;1-0=1;1-1=0。按上述方法实现乘法运算,只需要在按上述方法实现乘法运算,只需要在Y补补的低端附加一位的低端附加一位Yn+1=0,并不影响运算结果。并不影响运算结果。具体做法:具体做法:从最低位起,每次取两位乘数从最低

26、位起,每次取两位乘数(Yi+1和和Yi),根据,根据“Yi+1-Yi”的状态,的状态,确定本次部分积的值与上次部分积相加后右移一位,一共进行确定本次部分积的值与上次部分积相加后右移一位,一共进行n1次次“相加右移相加右移”操作,最后一次不移位,便可得到乘积的补码。操作,最后一次不移位,便可得到乘积的补码。第三章第三章 运算方法与运算器运算方法与运算器(26)“补码一位乘法补码一位乘法”的运算规则:的运算规则:在乘数在乘数Y的最后附加一位的最后附加一位Yn+1=0;从最低位从最低位Yn+1开始倒序每次取两位乘数开始倒序每次取两位乘数(Yi=0和和Yi+1),操作过程如,操作过程如下:下:YiYi

27、+1操作过程操作过程00上次部分积上次部分积0后右移一位后右移一位01上次部分积上次部分积X补补后右移一位后右移一位10上次部分积上次部分积X补补后右移一位后右移一位11上次部分积上次部分积0后右移一位后右移一位上述上述“相加右移相加右移”操作进行操作进行n+1次,最后一次不移位,便可得到次,最后一次不移位,便可得到X*Y补补。第三章第三章 运算方法与运算器运算方法与运算器(27)Y0 Y1 Y2 Y3 Y4 Y50 0 0 0 0 0 1 0 1 0 1 0+-X补补1 1 0 0 1 1-1 1 0 0 1 1 1 0 1 0 1 01 1 1 0 0 1 1 1 0 1 0 1+X补补0

28、 0 1 1 0 1 -0 0 0 1 1 0 1 1 0 1 0 10 0 0 0 1 1 0 1 1 0 1 0+-X补补1 1 0 0 1 1-1 1 0 1 1 0 0 1 1 0 1 01 1 1 0 1 1 0 0 1 1 0 1+X补补0 0 1 1 0 1 -0 0 1 0 0 0 0 0 1 1 0 10 0 0 1 0 0 0 0 0 1 1 0+-X补补1 1 0 0 1 1 -1 1 0 1 1 1 0 0 0 1 1 0X*Y补补=11 01110001X*Y原原=11 10001111X*Y=10001111143例1:已知X=+13,Y=-11,求X*Y解:X补=

29、X原=01101X补=10011Y原=11011Y补=10101第三章第三章 运算方法与运算器运算方法与运算器(28)Y0 Y1 Y2 Y3 Y4 Y5 Y60 0 0 0 0 0 0 1 0 0 1 1 0 0+00 0 0 0 0 0 0-0 0 0 0 0 0 0 1 0 0 1 1 0 00 0 0 0 0 0 0 0 1 0 0 1 1 0+-X补补0 0 1 0 1 0 1 -0 0 1 0 1 0 1 0 1 0 0 1 1 00 0 0 1 0 1 0 1 0 1 0 0 1 1+00 0 0 0 0 0 0-0 0 0 1 0 1 0 1 0 1 0 0 1 10 0 0 0

30、 1 0 1 0 1 0 1 0 0 1+X补补1 1 0 1 0 1 1 -1 1 1 0 0 0 0 0 1 0 1 0 0 11 1 1 1 0 0 0 0 0 1 0 1 0 0+00 0 0 0 0 0 0-1 1 1 1 0 0 0 0 0 1 0 1 0 01 1 1 1 1 0 0 0 0 0 1 0 1 0+-X补补0 0 1 0 1 0 1-0 0 1 0 0 0 1 0 0 0 1 0 1 0例2:已知X=-0.10101,Y=-0.11010,求X*Y解:X原=1.10101X补=1.01011-X补=0.10101Y原=1.11010Y补=1.00110X*Y补补=0

31、0.1000100010X*Y原原=00.1000100010X*Y=+0.1000100010第三章第三章 运算方法与运算器运算方法与运算器(28+)采用比较法实现补码一位乘法的乘法器逻辑结构,见41页图。补码两位乘法补码两位乘法为了加快乘法的运算速度,仿照补码一位乘法的思路,同样可扩展为补码两位乘法,从乘数的最低位开始倒序每次取两位乘数与被乘数相乘,便成为补码两位乘法。补码两位乘法部分积的形成补码两位乘法部分积的形成补码两位乘法同样采用比较法,需要在乘数末尾附加一位Yn+1,其初始值为“0”,每次参加比较的数为3位,即Yn+1、Yn、Yn1,这样做实际上是将补码一位乘法中的两次比较合为一次

32、来确定本次的部分积于是会产生8种不同的形成部分积的方式,相应的操作如下表:第三章第三章 运算方法与运算器运算方法与运算器(29)Yi-1 Yi Yi+1 操作过程 0 0 0上次部分积0后右移2位 0 0 1上次部分积X补后右移2位 0 1 0上次部分积X补后右移2位 0 1 1上次部分积2X补后右移2位 1 0 0上次部分积2X补后右移2位 1 0 1上次部分积X补后右移2位 1 1 0上次部分积X补后右移2位 1 1 1上次部分积0后右移2位第三章第三章 运算方法与运算器运算方法与运算器(30)补码两位乘法的操作过程补码两位乘法的操作过程例:已知X0.11111101,Y0.0111000

33、1,求X*Y=?解:XX补补00.1111110100.111111012X2X补补01.1111101001.11111010-X-X补补11.0000001111.00000011-2X-2X补补10.0000011010.00000110YY原原11.0111000111.01110001YY补补11.1000111111.10001111 部分积部分积乘数(乘数(Y)Y9(附加位附加位)0 0 0.0 0 0 0 0 0 0 0 1 1.1 0 0 0 1 1 1 1 01 1 1.0 0 0 0 0 0 1 1-X补补1 1 1.0 0 0 0 0 0 1 1 1 1 1 0 0 0

34、 1 1 1 1 01 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 10 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 11 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 10 0 0 1 1 1 1 1 1 0 1 X补补0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 0 0 10 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 01 1 1 0 0 0 0 0 1 1 0-2X补补1

35、 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 0 01 1 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 1 10 0 0 0 0 0 0 0 0 0 001 1 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1X*Y补补11.100100000101001111.1001000001010011X*Y原原11.011011111010110111.0110111110101101X*Y补补-0.0110111110101101-0.0110111110101101第三章第三章 运算方法与运算器运算方法与运

36、算器(31)说明:两个两个8位数相乘,只需作位数相乘,只需作5次次“相加右移相加右移”操作,最后一次不移位;操作,最后一次不移位;由于有由于有2X操作,因此部分积需设置操作,因此部分积需设置3个符号位,最高位代表部个符号位,最高位代表部分积的正确符号,部分积右移时应保持符号位不变;分积的正确符号,部分积右移时应保持符号位不变;若乘数若乘数Y的数码位为奇数位,则可在被乘数和乘数的末端均附加的数码位为奇数位,则可在被乘数和乘数的末端均附加一位一位“0”,使之成为偶数位后再进行乘法运算,乘积的最后,使之成为偶数位后再进行乘法运算,乘积的最后2位位“00”无效;无效;为进一步提高乘法的运算速度可采用阵

37、列乘法器。其思想是大幅为进一步提高乘法的运算速度可采用阵列乘法器。其思想是大幅度增加全加器的数量。度增加全加器的数量。第三章第三章 运算方法与运算器运算方法与运算器(32)三、定点除法运算及实现三、定点除法运算及实现定点除法运算有原码除法和补码除法两种。1 1、原码除法运算、原码除法运算符号位单独运算,将两个操作数的绝对值相除,最后给乘积冠以正确的符号的方法,称为“原码除法”。一般来说,n位原码除法是指被除数、除数和商数的数码位均为n位。在实际运算中,被除数被扩展成2n位,因此业允许参加运算的被除数是2n位。原码除法有恢复余数法和加减交替法之分。第三章第三章 运算方法与运算器运算方法与运算器(

38、33)恢复余数法恢复余数法例:若X=+0.1001,Y=-0.1101,求X/Y=?解:符号位单独处理 Qf=Xf异或Yf=1二进制除法手算过程:0.1 0 1 1 0.1 1 0 1 0.1 0 0 1 0 0 0 0 -1 1 0 1 0 1 0 1 0 0 -1 1 0 1 0 1 1 1 0-1 1 0 1 0 0 0 1 因此:商 Q0.1011余数R=+0.00000001第三章第三章 运算方法与运算器运算方法与运算器(34)说明:n位除法为了保证商数的数码位为位除法为了保证商数的数码位为n位,必须要求被除数的高位,必须要求被除数的高端端n位小于除数,否则可能出现位小于除数,否则可

39、能出现n+1位的商数,即位的商数,即“除法运算除法运算溢出溢出”。每次上商总是比较余数与除数的大小,若余数大于或等于除每次上商总是比较余数与除数的大小,若余数大于或等于除数则商数则商“1”,且将余数减去除数后左移一位得新余数;若余,且将余数减去除数后左移一位得新余数;若余数小于除数,则商数小于除数,则商“0”,且不做余数减除数操作,只将原余,且不做余数减除数操作,只将原余数左移一位得新余数,商数过程进行数左移一位得新余数,商数过程进行n次,共上次,共上n位商数,完位商数,完成成n位除法过程。位除法过程。上述过程的计算机实现为判断本次除法是否产生溢出,首先需要将被除数的高为判断本次除法是否产生溢

40、出,首先需要将被除数的高n位减位减去除数,若其余数大于去除数,若其余数大于0,则判定本次运算溢出,立即中止除,则判定本次运算溢出,立即中止除法运算;若余数小于法运算;若余数小于0,则应将除数加回去恢复被除数,继续,则应将除数加回去恢复被除数,继续以下除法过程。以下除法过程。每次上商之前,总要作一次余数减除数操作。若该余数大于每次上商之前,总要作一次余数减除数操作。若该余数大于或等于或等于0,则表示够减商,则表示够减商“1”后将该余数左移一位得新余数;后将该余数左移一位得新余数;若该余数小于若该余数小于0,表示不够减,商,表示不够减,商“0”,本次减法运算不该,本次减法运算不该作,应将除数加回去

41、,恢复原来的余数后将其左移一位得新作,应将除数加回去,恢复原来的余数后将其左移一位得新余数,恢复余数法因此而得名。余数,恢复余数法因此而得名。第三章第三章 运算方法与运算器运算方法与运算器(35)例:若X=+0.1001,Y=-0.1101,求X/Y=?解:符号位单独处理:Qf=Xf异或Yf=1|X|原=0.1001|Y|原=0.1101|Y|补=0.1101|Y|补=1.00110.1 0 0 1 0.0 0 0 +-|Y|补补1 0 0 1 11 1 1 0 0 0 0 0 0 0 +|Y|补补0 1 1 0 10 1 0 0 1 0 0 0 0 01 0 0 1 0 0 0 0 0 +-

42、|Y|补补1 0 0 1 1 0 0 1 0 1 0 0 0 0 10 1 0 1 0 0 0 0 1 +-|Y|补补1 0 0 1 11 1 1 0 1 0 0 0 1 0 +|Y|补补0 1 1 0 1 0 1 0 1 0 0 0 0 1 01 0 1 0 0 0 0 1 0 +-|Y|补补1 0 0 1 10 0 1 1 1 0 0 1 0 10 1 1 1 0 0 1 0 1 +-|Y|补补1 0 0 1 1 0.0 0 0 1 0.1 0 1 1结果:商数Q-0.1011余数R+0.00012-4若最后余数为负,要纠余。第三章第三章 运算方法与运算器运算方法与运算器(36)恢复余数法

43、的缺点:商0时需恢复余数,降低了除法运算速度;操作步骤不规则,商0时需作5步操作,商1时需作3步操作。加减交替法加减交替法加减交替法又称作“不恢复余数法”,由“恢复余数法”改进而来。先分析恢复余数法的操作过程:第i次操作是将上此操作的余数Ri左移一位减去除数Y得新的余数Ri1,即Ri1=2Ri-Y,若Ri10,则商为1,进入第i+1次操作,进行2Ri1-Y;若Ri10,则商0,并且恢复余数Ri1+Y=2Ri,然后进入第i+1次操作,进行4Ri-Y。若当第i次操作商0后,不恢复余数,而是直接进入第i+1次操作,将小于0的余数Ri1左移一位后加Y,即进行2Ri1Y=2(2Ri-Y)+Y=4Ri-2

44、Y+Y=4Ri-Y,这样作的效果与恢复余数后的第i+1次操作完全相同,这说明恢复余数的操作并不是必须的。若余数为正则商1,下一步将余数左移一位后减去除数Y;若余数为负则商0,下一步将余数左移一位后加上除数Y。加减交替法由此而来。第三章第三章 运算方法与运算器运算方法与运算器(37)加减交替法的运算规则:加减交替法的运算规则:若若Ri0,则商为,则商为1,下次作,下次作2 RiY操作;操作;若若Ri0,则商为,则商为0,下次作,下次作2 Ri+Y操作;操作;用恢复余数法相同的例子:例:若X=+0.1001,Y=-0.1101,求X/Y=?解:符号位单独处理:Qf=Xf异或Yf=1|X|原=0.1

45、001|Y|原=0.1101|Y|补=0.1101|Y|补=1.0011第三章第三章 运算方法与运算器运算方法与运算器(38)0.1 0 0 1 0.0 0 0 0+-|Y|补1 0 0 1 11 1 1 0 0 0 0 0 0 0Ri0,商1,下次2Ri-Y0 1 0 1 0 0 0 0 1+-|Y|补1 0 0 1 11 1 1 0 1 0 0 0 1 0 Ri0,商1,下次2Ri-Y0 1 1 1 0 0 1 0 1+-|Y|补1 0 0 1 1 0.0 0 0 1 0.1 0 1 1 Ri0,商1结果:Q=-0.1011R=+0.00012-4第三章第三章 运算方法与运算器运算方法与运

46、算器(39)说明:商的第一位应为0,仅表示结果未溢出,若为1,则溢出,中止操作;若最后余数为负,要纠余,即增加一次|Y|操作;加减交替法克服了恢复余数法的两个问题,在现代计算机中原码除法均采用加减交替法;最后给商数和余数冠以正确符号(余数与被除数符号同)。2 2、补码除法运算、补码除法运算符号位同样参与运算,加减交替法。第三章第三章 运算方法与运算器运算方法与运算器(40)四、浮点数的算术运算方法及实现四、浮点数的算术运算方法及实现1 1、浮点数的加减运算、浮点数的加减运算对阶尾数运算结果规格化m补=00.1XXX.Xm补=11.0XX.Xm补=11.100.0向右规格化m补=01.XXX.X

47、m补=10.XX.X向左规格化去掉小数点后的前导0去掉小数点后的前导1,但11.100.0除外第三章第三章 运算方法与运算器运算方法与运算器(40+)2 2、浮点除法运算、浮点除法运算五、计算机中的逻辑运算及实现五、计算机中的逻辑运算及实现1 1、逻辑非、逻辑非 按位取反按位取反2 2、逻辑与、逻辑与 常用来分离字段常用来分离字段3 3、逻辑或、逻辑或 常用来合并字段常用来合并字段4 4、逻辑异或、逻辑异或 常用来比较两数是否相等常用来比较两数是否相等 5 5、左移、左移1 1位位 X-X-2X 2X 6 6、右移、右移1 1位位 X-X-X/X/2 2练习题练习题某机字长某机字长32位,浮点

48、表示时,阶码占位,浮点表示时,阶码占8位,尾数占位,尾数占24位,位,各包含一个符号位。问:各包含一个符号位。问:(1)带符号定点小数的最大表示范围是多少?带符号定点小数的最大表示范围是多少?(2)带符号定点整数的最大表示范围是多少?带符号定点整数的最大表示范围是多少?(3)浮点表示时,最大的正数是多少?浮点表示时,最大的正数是多少?(4)浮点表示时,最大的负数是多少?浮点表示时,最大的负数是多少?(5)浮点表示时,最小的规格化正数是多少?浮点表示时,最小的规格化正数是多少?答答 案案答案:答案:(1)-1+(1-2-31)(2)-2+31+(2+31-1)(3)(1-2-23)*2+127(

49、4)-2-23*2-128(5)+2-1*2-128习题习题一、已知一、已知X=-0.10001012-111Y=+0.00010102-100(1)用补码运算求用补码运算求XY?,并判断是否有溢出。?,并判断是否有溢出。(2)用补码运算求用补码运算求XY?,并判断是否有溢出。?,并判断是否有溢出。解:解:(1)对阶对阶X=-0.0001000 2-100(2)运算运算X补补=11 100,11.1111000X补补=11 100,11.1111000+Y补补=11 100,00.0001010 +-Y补补=11 100,11.1110110-X+Y补补=11 100,00.0000010 X

50、-Y补补=11 100,11.1101110(3)结果规格化结果规格化X+Y补补=11 100,00.0000010=10 111,00.1000000溢出溢出X-Y补补=11 100,11.1101110=11 010,11.0111000X-Y=-0.10010002-110习题习题二、已知二、已知X=-7.25Y=+28.5625(1)将将X和和Y分别转换成二进制浮点数(阶码分别转换成二进制浮点数(阶码4位,尾数位,尾数10位,各包位,各包含一个符号位;含一个符号位;(2)用变形补码求用变形补码求XY?答答 案案解:解:X=-111.01=-0.111012+011Y=+11100.10

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁