第3章运算方法和运算部件(2)-乘除及校验_第1页
第3章运算方法和运算部件(2)-乘除及校验_第2页
第3章运算方法和运算部件(2)-乘除及校验_第3页
第3章运算方法和运算部件(2)-乘除及校验_第4页
第3章运算方法和运算部件(2)-乘除及校验_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、13.3 3.3 二进制乘法运算二进制乘法运算以加法器为核心,通过加法和移位实现乘法运算。以加法器为核心,通过加法和移位实现乘法运算。1.1.软件编程方法实现软件编程方法实现( (时序控制乘法器)时序控制乘法器) 原码乘法是先取绝对值相乘,再根据同号相乘为正、异号原码乘法是先取绝对值相乘,再根据同号相乘为正、异号相乘为负,单独决定符号位。补码乘法则让符号位直接参相乘为负,单独决定符号位。补码乘法则让符号位直接参加运算,算法将会复杂一些。加运算,算法将会复杂一些。2.2.硬件快速乘法器实现硬件快速乘法器实现 利用中大规模集成电路芯片,在一个节拍中实现多项部分利用中大规模集成电路芯片,在一个节拍中

2、实现多项部分积的相加,成为阵列乘法器。积的相加,成为阵列乘法器。23.3.1 3.3.1 定点数一位乘法定点数一位乘法1定点原码一位乘法定点原码一位乘法(1)乘法的运算规则设 x=xf.x1x2xn,y=yf.y1y2yn乘积为P,乘积的符号位为Pf,则Pf=xfyf,|P|=|x|y|例例A= 0.1101, B= 0.1011, A= 0.1101, B= 0.1011, 求求A A* *B B 0.1101 0.1101 0.1011 0.1011 0110101101 01101 01101 00000 00000 01101 01101 0.10001111 0.10001111笔算

3、法的特点:笔算法的特点:n n 位数相乘,需要将位数相乘,需要将n n个位积相加,需要个位积相加,需要2n2n位加位加法器,不能法器,不能有效有效利用全加器操作利用全加器操作 由手算到机器实现,要解决三个问题:符号问题、由手算到机器实现,要解决三个问题:符号问题、部分积相加进位问题、移位问题。部分积相加进位问题、移位问题。位积位积 ABiA*B= 0.10001111求求|P|P|的运算规则:的运算规则:位积=5原码一位乘法的算法流程图原码一位乘法的算法流程图: :i表示循环次数(相加移位的次数)yn表示乘数将要被判断的那一位Pi为部分积6符号扩展符号扩展把一个数的位数进行扩充但其真值不变。把

4、一个数的位数进行扩充但其真值不变。正数的符号扩展:最高符号位之前补正数的符号扩展:最高符号位之前补0 0(“0”0”表表示正号)。示正号)。负数的符号扩展:最高符号位之前补负数的符号扩展:最高符号位之前补1 1(“1”1”表表示负号)。示负号)。例:例: XX补补 =10010011=10010011,将其扩展成,将其扩展成1616位补码,得位补码,得 XX补补 =1111111110010011=1111111110010011例:例: XX补补 =00101100=00101100,将其扩展成,将其扩展成1616位补码,得位补码,得 XX补补 =0000000000101100=00000

5、000001011007 A (部分积部分积累加和累加和) C(乘数乘数) 00.0000 1 0 1 1 +00.1101_ 00.1101 00.0110 1 1 0 1 1 +00.1101_ 01.0011 00.1001 1 1 1 0 1 +00.0000_ 00.1001 00.0100 1 1 1 1 0 +00.1101 _ 01.0001 00.1000 1 1 1 1 1丢弃项丢弃项10001111. 0YXYXPsss部分积右移部分积右移加加“被乘数被乘数”加加“0”寄存器:寄存器:A A:存放:存放部分积累加和、部分积累加和、 乘积高位乘积高位B B:存放:存放被乘数

6、被乘数C C:存放:存放乘数、乘积低位乘数、乘积低位 A = 00.0000A = 00.0000(初始值)(初始值)B = |X| = 00.1101 B = |X| = 00.1101 C = |Y| = 00.1011C = |Y| = 00.1011例例3.31 3.31 X=0.1101,Y=0.1011,求求XY. 计算过程如下计算过程如下:加加“被乘数被乘数”8 (2)逻辑实现9注意:注意:两操作数的绝对值相乘, 符号位单独处理。寄存器A.B均设置双符号位,第1符号位始终是部分积符号,决定在右移时第1符号位补0操作步数由乘数的尾数位数决定,用计数器Cd来计数。即作n次累加和移位。

7、最后是加符号位,根据XsYs决定。10 补码乘法不能简单的套用原码乘法的算法,因为补码的符号位补码乘法不能简单的套用原码乘法的算法,因为补码的符号位是参加运算的。是参加运算的。(1)(1)校正法校正法所谓校正法,将所谓校正法,将XX补补和和YY补补按原码运算,所得结果根据情况加以校按原码运算,所得结果根据情况加以校正,从而得到正,从而得到XYXY补补。算法分析:算法分析:若被乘数若被乘数X X的符号任意的符号任意XX补补 = X= X0 0.X.X1 1X X2 2XnXn 1 1)Y Y为正:为正:YY补补 = 0.Y= 0.Y1 1Y Y2 2YnYn XYXY补补 = X= X补补(0.

8、Y(0.Y1 1Y Y2 2Yn)Yn) 2 2)Y Y为负:为负:YY补补 = 1.Y= 1.Y1 1Y Y2 2YnYn YY补补=2+Y=2+Y,真值,真值 Y=YY=Y补补-2=1.Y-2=1.Y1 1Y Y2 2Yn-2Yn-2 = 0.Y = 0.Y1 1Y Y2 2Yn-1Yn-1 XYXY补补 = X= X补补(0.Y(0.Y1 1Y Y2 2Yn)+-XYn)+-X补补 3 3)Y Y符号任意:符号任意:XYXY补补 = X= X补补0.Y0.Y1 1Y Y2 2Yn+-XYn+-X补补Y Y0 0符号位符号位Y0,Y0,除按除按 1 1)计算外,另加计算外,另加-XX补补校

9、正校正直接按原码直接按原码乘法运算乘法运算2 2、定点补码一位乘法、定点补码一位乘法11若例若例3.33中中Y=0.1011,求,求XY补补时,需在最后右移时,需在最后右移1位后,位后,X补补。校正南华大学计算机学院12(2) (2) 比较法比较法算法算法( (布斯公式布斯公式) )校正法在乘数为负数时,需要进行校正,控制起校正法在乘数为负数时,需要进行校正,控制起来要复杂一些,我们希望有一个对于正数和负数都一来要复杂一些,我们希望有一个对于正数和负数都一致的算法,这就是比较法。比较法是英国的致的算法,这就是比较法。比较法是英国的BoothBooth夫夫妇提出来的,因此又称妇提出来的,因此又称

10、BoothBooth法法。根据校正法的统一表达式:根据校正法的统一表达式: XYXY补补 = = XX补补(0.(0.Y Y1 1Y Y2 2Y Yn n)+-X)+-X补补Y Y0 0 = = XX补补(0.(0.Y Y1 1Y Y2 2Y Yn n)-X)-X补补Y Y0 0 =XX补补(-(-Y Y0 0+ +2 2-1-1Y Y1 1+ + 2 2-2-2 Y Y2 2+ + +2 2-n-n Y Yn n) ) = X补 -Y0+(Y1-2-1Y1)+(2-1 Y2-2-2 Y2)+(2-(n-1)Yn-2-n Yn) = X补( (Y Y1 1-Y-Y0 0)+2)+2-1-1(Y

11、(Y2 2-Y-Y1 1)+2)+2-2-2(Y(Y3 3-Y-Y2 2) )+ 2 2-n-n(Y(Yn+1n+1-Y-Yn n)201)(iniiiYYX补比较法:用相邻两位乘数比较的比较法:用相邻两位乘数比较的结果决定结果决定+XX补补、-XX补补或或+0+0。( (BoothBooth算法)的运算规则算法)的运算规则: :位积=( - ) 14补码一位乘法算法流程图补码一位乘法算法流程图: :Pi为部分积00或11i表示循环次数(相加移位的次数)15例例3.33.34 4 x=-0.1101,y=-0.1011(书上y为正数),求xy补=?解:x补=11.0011, -x补=00.11

12、01 (双符号)y补=1.0101 (单符号)16步数步数 条件条件 操作操作 P YP Y 00.0000 1.01010 0 1)0 1-X-X补补Yi Yi+1+ 00.110100.1101 00.01101 1.01012) 1 0X补+ 11.001111.100111.1100111.010 3) 0 1-X-X补补+ 00.110100.100100.01001111.01 4) 1 0X补+ 11.001111.011111.101111111.0Yi+1Yi 5) 0 1 -X-X补补+ 00.1101 00.1000 1111 XYXY补补 = 0.10001111 =

13、0.10001111右移时左边补0,因为是正数(根据符号扩展原理)右移时左边补1,因为是负数(根据符号扩展原理)17P P、X X取双符号位,取双符号位,符号参加运算符号参加运算;Y Y取单符号位,符号参加移位,以决定最后是取单符号位,符号参加移位,以决定最后是否修正;否修正;Y Y末位设置附加位末位设置附加位Y Yi+1i+1,初值为,初值为0 0,Y Yi+1i+1Y Yi i组成判组成判断位,决定运算操作;断位,决定运算操作;需作需作n+1n+1次累加次累加, ,n n次移位次移位( (最后一次不移位最后一次不移位) )。 (4) (4)运算规则运算规则183.3.2.3.3.2.定点数

14、二位乘法定点数二位乘法 每次用两位乘数去乘被乘数,乘法速度提高一倍每次用两位乘数去乘被乘数,乘法速度提高一倍Y Yi-1i-1( (高位高位) ) Y Yi i ( (低位低位) ) 部分积累加、移位部分积累加、移位 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 1/41/4P P 1/4(P+X) 1/4(P+X) 1/4(P+2X) 1/4(P+2X) 1/4(P+3X) 1/4(P+3X)( 0 )( 0 )( 1 )( 1 )( 2 )( 2 )( 3 )( 3 ) 0 0 X X 2 2X X 3 3X XX X左移左移1 1位即得位即得2 2X X,如何实现,如何

15、实现+3+3X X操作?操作? 原码两位乘法为例原码两位乘法为例 (1) (1) 算法分析算法分析( (P P4848) )19 1/4(P+3X)= 1/4(P+3X)= 1/4(P-X+4X)=1/4(P-X+4X)=1/4(P-X)1/4(P-X)+ +X X 设置设置欠帐触发器欠帐触发器C C=0 0 不欠帐不欠帐1 1 欠帐欠帐, ,下次补作下次补作+ +X X操作操作(2)算法算法( (P P4949表表3.3)3.3)0 0 00 0 00 0 10 0 10 1 00 1 00 1 10 1 1 0 0 0 01 0 11 0 11 1 01 1 01 1 11 1 1操操 作

16、作 Y Yi-1i-1 Y Yi i C C1/4(1/4(P+X) 0 P+X) 0 C C1/4(1/4(P+X) 0 P+X) 0 C C1/4(1/4(P+2X) 0 P+2X) 0 C C1/41/4P 0 P 0 C C1/4(1/4(P+2X) P+2X) 0 0 C C1/4(1/4(P-X) P-X) 1 1 C C1/4(1/4(P-X) P-X) 1 1 C C1/41/4P P 1 1 C C20 -X补 = 11.011001 2X=01.001110部分积部分积乘数乘数欠位欠位C 00.000000 1 0 0 1 1 1 0+-X补 11.011001 11.01

17、1001 右移2位11.110110 0 1 1 0 0 1 1 2X 01.001110 01.000100 右移2位 00.010001 0 0 0 1 1 00 +2X 01.001110 01.011111 右移2位 00 010111 1 1 0 0 0 1 0 乘积高位 乘积低位 X * Y = 0.010111110001例例3.35 3.35 假定假定X=0.100111X=0.100111,Y= 0.100111 Y= 0.100111 求求XYXY? 21注意注意: 若最后一次操作欠下若最后一次操作欠下4 4X X即即C=1C=1,则最后一,则最后一次右移次右移2 2位后,

18、还需补充位后,还需补充X X操作,操作,X X后不再后不再移位。移位。 乘数符号不参加运算,参加运算的操作数乘数符号不参加运算,参加运算的操作数取绝对值,取绝对值,x xX X,2x2x2 2X X,符号位,符号位单独处理。单独处理。南华大学计算机学院223.3.3阵列乘法器阵列乘法器为了进一步提高乘法运算的速度,可采用高速乘法模块为了进一步提高乘法运算的速度,可采用高速乘法模块组成的阵列乘法器,设有两个带符号的二进制数。组成的阵列乘法器,设有两个带符号的二进制数。 例:m=n=4时,有: x4 x3 x2 x1 * y4 y3 y2 y1 - x4y1 x3y1 x2y1 x1y1 x4y2

19、 x3y2 x2y2 x1y2 x4y3 x3y3 x2y3 x1y3 x4y4 x3y4 x2y4 x1y4 22221010101010)(knmkkjiminjjijnjiimiiPyxyxYXPYX P8 P7 P6 P5 P4 P3 P2 P1 其结构图其结构图见见P P5050图图3.73.7可同时得到可同时得到各项部分积,各项部分积,并一次将其相并一次将其相加就得到乘积加就得到乘积运算速度快。运算速度快。23图3.7 阵列乘法器 243.4 3.4 二进制除法运算二进制除法运算二进制除法可模仿十进制除法运算。二进制除法可模仿十进制除法运算。除法,理论上是乘法的逆运算,在算法除法,

20、理论上是乘法的逆运算,在算法上本质是一种上本质是一种试探法:试探法:它试探被除数是大于它试探被除数是大于等于还是小于除数,大于等于时商为等于还是小于除数,大于等于时商为1 1,小小于时商为于时商为0 0。25笔算除法笔算除法 A=0.1001, B=0.1011, A=0.1001, B=0.1011, 求商求商C, C, 余余数数R.R. 0.11010.1101 0.1011 0.10010 0.1011 0.10010 R R0 0=A=A - 0.01011 - 0.01011 -2-2-1-1B B 0.001110 0.001110 R R1 1 - 0.001011 - 0.00

21、1011 -2-2-2-2B B 0.0000110 0.0000110 R R2 2 0.00001100 0.00001100 R R3 3 - 0.00001011 - 0.00001011 -2-2-4-4B B 0.00000001 0.00000001 R R4 426笔算过程在计算机上的实现,必须作些变动:笔算过程在计算机上的实现,必须作些变动:比较除数与被除数过程,用减法实现;比较除数与被除数过程,用减法实现; 除数乘以除数乘以1/21/2与余数比较,等效于除数不与余数比较,等效于除数不动,而使余数动,而使余数左左移一位;移一位; 上商可以通过在商寄存器末位置上商可以通过在商寄

22、存器末位置1 1(商(商1 1)或置或置0 0(商(商0 0)来实现。上商同时使商寄存)来实现。上商同时使商寄存器与余数寄存器一起器与余数寄存器一起左左移一位。移一位。( (商寄存器初始存放被除数的低位数值部分商寄存器初始存放被除数的低位数值部分) )273.4.1 3.4.1 定点除法运算定点除法运算定点原码一位除法定点原码一位除法 有有恢复余数法恢复余数法和和加减交替法加减交替法两种方法,在两种方法,在计算机中常用的是加减交替法,因为它的操作计算机中常用的是加减交替法,因为它的操作步骤少,而且也不复杂。步骤少,而且也不复杂。 两个原码数相除,其商的符号为两数符号两个原码数相除,其商的符号为

23、两数符号的异或值,数值则为两数绝对值相除后的结果。的异或值,数值则为两数绝对值相除后的结果。实现除法的关键:实现除法的关键:比较余数、除数绝对值大小,以决定上商。比较余数、除数绝对值大小,以决定上商。28运算规则:运算规则:符号位单独处理,符号位单独处理,C C0 0=A=A0 0 B B0 0数值部分变成两正数相除,数值部分变成两正数相除,即即:|A|/|B| :|A|/|B| (|A|B|(|A|B|,防止商溢出,防止商溢出) )第第1 1步除法通过步除法通过R R0 0 - |B|(R- |B|(R0 0=|A|)=|A|)实现;实现;其后每其后每1 1步除法通过步除法通过2R2Ri i

24、-|B|(i =1,2,n)-|B|(i =1,2,n)实现:实现:若若2R2Ri i-|B|=R-|B|=Ri+1i+1 0, 0, 即余数为即余数为正正,则商上,则商上1 1;若若2R2Ri i-|B|=R-|B|=Ri+1i+10, 0, 即余数为即余数为负负,则商上,则商上0 0。291. 1. 恢复余数法恢复余数法不管被除数(或余数)减除数是否够减,都一律做减法。不管被除数(或余数)减除数是否够减,都一律做减法。若余数为正或若余数为正或0 0,表示够减,该位商上,表示够减,该位商上“1”1”,余数左移,余数左移1 1位。位。若余数为负,表示不够减,该位商上若余数为负,表示不够减,该位

25、商上“0”0”,并要,并要恢复恢复原来的原来的被除数(或被除数(或余数余数),再将其左移),再将其左移1 1位。位。按上述规则实现的按上述规则实现的除法器,有什么问题?除法器,有什么问题?相同位数的除法,对于不同的值,由于可相同位数的除法,对于不同的值,由于可能有恢复余数过程,运算步数不统一。控制器实能有恢复余数过程,运算步数不统一。控制器实现困难!(回忆:乘法运算器里的步数计数器)现困难!(回忆:乘法运算器里的步数计数器)30设某步得到余数设某步得到余数R Ri i 0 0,得到下步除法的新余,得到下步除法的新余数数R Ri+1i+1: R Ri+1i+1 = 2 R = 2 Ri i -

26、|B| - |B|若若R Ri i是假余数,即是假余数,即R Ri i00,要得到下步除法的新,要得到下步除法的新余数余数R Ri+1i+1,要先恢复余数,而后左移一位再减,要先恢复余数,而后左移一位再减|B|B|才能得到新余数。即:才能得到新余数。即: R Ri+1i+1 = 2(R = 2(Ri i + |B|) - |B| + |B|) - |B|将上式变换一下,得:将上式变换一下,得: R Ri+1i+1 = 2 R = 2 Ri i + |B| + |B|去掉恢复步!去掉恢复步!加减交替法加减交替法31若某步除法若某步除法R Ri i00,要得到下步除法的新余数,要得到下步除法的新余

27、数R Ri+1i+1,不必恢复余数,只要将不必恢复余数,只要将R Ri i视为余数,左移一位,再加视为余数,左移一位,再加上上|B|B|就得到新余数就得到新余数R Ri+1i+1。即:。即:本次余数为本次余数为正正,下步除法作,下步除法作减减法;(够减,商上法;(够减,商上1 1)本次余数为本次余数为负负,下步除法作,下步除法作加加法。法。 (不够减,商上(不够减,商上0 0)2. 加减交替法加减交替法例例3.36 设被除数设被除数X=0.1011,除数,除数Y=0.1101,用加减交替法求,用加减交替法求X/Y。 -Y补补=11.0011,计算过程如下计算过程如下:0 0 1 0 1 1 0

28、 0 0 0 0 开始情形1 1 0 0 1 1 +-Y补1 1 1 1 1 0 0 0 0 0 0 不够减,商上01 1 1 1 0 0 0 0 0 0 0 左移0 0 1 1 0 1 +Y0 0 1 0 0 1 0 0 0 0 1 够减,商上10 1 0 0 1 0 0 0 0 1 0 左移1 1 0 0 1 1 +-Y补0 0 0 1 0 1 0 0 0 1 1 够减,商上10 0 1 0 1 0 0 0 1 1 0 左移 1 1 0 0 1 1 +-Y补1 1 1 1 0 1 0 0 1 1 0 不够减,商上01 1 1 0 1 0 0 1 1 0 0 左移0 0 1 1 0 1 +Y

29、0 0 0 1 1 1 0 1 1 0 1 够减,商上1+)+)+)+)+)被除数(余数R) (被除数)(商) 操作说明余数 商X/Y=0.1101, 余数=0.00000111余数寄存器余数寄存器(A)(A)中开始时存放被除数的绝对值,以中开始时存放被除数的绝对值,以后将存放各次余数,取双符号位。后将存放各次余数,取双符号位。除数寄存器除数寄存器(B)(B)存放除数的绝对值,取双符号位。存放除数的绝对值,取双符号位。商寄存器商寄存器(C)(C)同同来存放商及初始被除数低位数值(被除数位数可以来存放商及初始被除数低位数值(被除数位数可以是除数的两倍),取单符号位。是除数的两倍),取单符号位。将

30、被除数将被除数X X视为初始余数视为初始余数R R0 0,根据,根据R R0 0符号位正(绝对符号位正(绝对值),令商符为值),令商符为0 0,正式的商符以后再置入。,正式的商符以后再置入。第一第一步步为为-Y-Y。商值则根据余数商值则根据余数R Ri i的符号来决定,正则商上的符号来决定,正则商上1 1,求下,求下一位商的办法是余数左移一位再减去除数;当余数一位商的办法是余数左移一位再减去除数;当余数为负则商上为负则商上0 0,求下一位商的办法是余数左移一位,求下一位商的办法是余数左移一位再加上除数。左移位时末位补再加上除数。左移位时末位补0 0。最后一步最后一步操作:如果要求得操作:如果要

31、求得n n位商(不含符号位),位商(不含符号位),则需作则需作n n步步“左移左移- -加减加减”循环;若第循环;若第n n步步余数为负余数为负,则需增加一步恢复余数,增加的这一步不移位。则需增加一步恢复余数,增加的这一步不移位。343.4.2 3.4.2 提高除法运算速度的方法举例提高除法运算速度的方法举例 1. 跳0跳1除法 提高规格化小数绝对值相除速度的算法。可根据余数前几位代码值再次求得几位同为1或0的商。其规则是:(1) 如果余数R0,且R的高K个数位均数0,则本次直接得商1,后跟K-1个0。R左移K位后,减去除数Y,得新余数。(2) 如果余数R0,且R的高K个数位均为1,则本次商为

32、0,后跟K-1个1,R左移K位后,加上除数Y,得新余数。(3) 不满足(1)和(2)中条件时,按一位除法上商。 35例3.37 设X=0.1010000,Y=0.1100011,求X/Y。解 :略 2. 除法运算通过乘法操作来实现在计算机运行时,执行乘法指令的几率比除法高。某些CPU中设置有专门的乘法器,一般没有专用除法器,在这种情况下,利用乘法来完成除法运算可提高速度。36设X为被除数,Y为除数,按下式完成X/Y。式中Fi(0ir)为迭代系数,如果迭代几次后,可以使分母YF0F1Fr1,则分子即为商:XF0F1Fr 因此,问题是如何找到一组迭代系数,使分母很快趋近于1。若X和Y为规格化正小数

33、二进制代码,可写成: Y=1- (01/2) rrFFFYFFFXYX 101037如果取 F0=1+,则第一次迭代结果:Y0=YF0=(1-)(1+)=1-2取F1=1+2,则第二次迭代结果:Y1=Y0F1=(1-2)(12)=1-4 取Fi=1+2i,则第i+1次迭代结果:Yi=Yi-1Fi=(1-2i)(1+2i)=1-2i+1当i增加时,Y将很快趋近于1,其误差为2i+1。实际上求得Fi的过程很简单,即 Fi=1+2i=2-1+2i=2-(1-2i)=2-Yi-1Fi就是(-Yi-1)的补码(0ir)。 38例3.38 设X=0.1000,Y=0.1011则=1-Y=0.0101,F0

34、=1+=1.0101分子分母分别进行乘法运算。F1=2-Y0=2-0.1110=1.0010 分母趋近于1所以1110. 01011. 00101. 11011. 00101. 11000. 00000FYFXYX1111. 01100. 00010. 11110. 00010. 11011. 0101011FYFXYX1100. 0111XYXYX393.5 浮点数的运算方法浮点数的表示形式(以浮点数的表示形式(以2 2为底):为底): N = N = M M 2 2E E其中,其中,M M为浮点数的为浮点数的尾数尾数,一般为绝对值,一般为绝对值小于小于1 1的规格化二进制小数用原码或补码形

35、的规格化二进制小数用原码或补码形式表示;式表示;E E为浮点数的为浮点数的阶码阶码,一般是用移码,一般是用移码或补码表示的整数。或补码表示的整数。 403.5.3.5.1 1 浮点数的加减法运算两数首先均为规格化数,在进行规格化浮点数两数首先均为规格化数,在进行规格化浮点数的加减运算需经过五步完成:的加减运算需经过五步完成:(1 1)对阶操作:低阶向高阶补齐,使阶码相等;)对阶操作:低阶向高阶补齐,使阶码相等;(2 2)尾数运算:阶码对齐后直接对尾数运算;)尾数运算:阶码对齐后直接对尾数运算;(3 3)结果规格化:对运算结果进行规格化处理;)结果规格化:对运算结果进行规格化处理; ( (使补码

36、尾数的最高位和尾数符号相反使补码尾数的最高位和尾数符号相反) ) (4 4)舍入操作:丢失位进行)舍入操作:丢失位进行0 0舍舍1 1入或恒置入或恒置1 1处理;处理;(5 5)判断溢出:判断阶码是否溢出,下溢则将运)判断溢出:判断阶码是否溢出,下溢则将运 算结果置算结果置0 0(机器零)(机器零),上溢则溢出中断。,上溢则溢出中断。举例说明如下:(1)对阶运算对阶运算( (小阶向大阶对齐小阶向大阶对齐) )尾数为原码时尾数为原码时, ,尾数右移尾数右移, ,符号位不动符号位不动, ,最高位补最高位补0 0尾数为补码时尾数为补码时, ,尾数右移尾数右移, ,符号也移位符号也移位, ,最高位补符

37、最高位补符号位号位例如:例如: 求求 =? =?小阶对大阶小阶对大阶舍掉的是舍掉的是如大阶对小阶如大阶对小阶则舍掉的是则舍掉的是21001. 021101. 0333321111. 020010. 021101. 021101. 021001. 020100. 020001.0321100. 03332101110. 02001010. 021001. 0(2)(2)尾数的加减运算尾数的加减运算(3)(3)规格化:原码尾数值高位为规格化:原码尾数值高位为1 1,补码尾数值高位与符号相反,补码尾数值高位与符号相反 (4)(4)舍入操作:舍入操作:0 0舍舍1 1入入 或或 恒置恒置1 1例1:求

38、=?0舍1入后为恒置1例2:求 =?0舍1入后为恒置1(5)判断结果的正确性判断结果的正确性( (即结果的阶码是否溢出即结果的阶码是否溢出) )21001.021001.033332101101.02001001.021001.021010.021001.03321100.0321011.0321011.0321011.0南华大学计算机学院43规格化浮点数加减运算流程。(规格化浮点数加减运算流程。(P P9191)44例例3.39 3.39 两浮点数相加,求两浮点数相加,求X+YX+Y。 已知:已知:X X2 2010 010 0.11011011 0.11011011, y y2 2100

39、100 (-0.10101100) (-0.10101100)计算过程:计算过程:解:解:X X和和Y Y在机器中的浮点补码表示形式为在机器中的浮点补码表示形式为( (双符号位双符号位) ): 阶符阶符 阶码阶码 数符数符 尾数尾数 X X: 0 0 0 1 0 0 0 1 1 0 1 1 0 1 10 0 0 1 0 0 0 1 1 0 1 1 0 1 1 Y Y: 0 0 1 0 0 1 1 0 1 0 1 0 1 0 00 0 1 0 0 1 1 0 1 0 1 0 1 0 0(1 1)对阶操作对阶操作 阶差阶差EEExEx补补+-+-E EY Y 补补=00010+11100=1111

40、0=00010+11100=11110 X X阶码小,阶码小,MxMx右移右移2 2位,保留阶码位,保留阶码E E0010000100。 MxMx补补=00 00 110 110 =00 00 110 110 1111 下划线上的数是右移出去而保留的附加位。下划线上的数是右移出去而保留的附加位。(2 2)尾数相加尾数相加 MxMx补补+M MY Y 补补=0000110110=00001101101111+1101010100=1110001010+1101010100=11100010101111。(3 3)规格化操作规格化操作 左规,移左规,移1 1位,结果:位,结果:1100010101

41、 1100010101 1010;阶码;阶码-1-1,E E0001100011。 45(4 4)舍入)舍入附加位最高位为附加位最高位为1 1,在所得结果的最低,在所得结果的最低位位+1+1。得新结果:得新结果: MM补补=1100010110=1100010110, M M: - 0- 01110101011101010。(5 5)判溢出)判溢出 阶码符号位为阶码符号位为0000,故不溢出。,故不溢出。最终结果为:最终结果为: X+Y=2X+Y=2011 011 (-0 (-011101010)11101010)浮点数的乘除浮点数的乘除: :阶码为两数阶码之和、差,其尾数应为两数的尾数之积、

42、商。结果的处理:结果的处理:结果必须进行规格化、舍入和判溢出等操作。 3.5.2 浮点数浮点数的乘除法运算的乘除法运算1. 浮点数的阶码运算阶码运算:+1,-1,两阶码求和以及两阶码求差四种。移码的运算规则:移码的定义为:X移=2n+X -2nX2n X移+Y移=2n+X+2n+Y=2n+(2n+(X+Y) =2n+X+Y移 结果的最高位多加了个1,要得到移码形式的结果,需对结果的符号取反。根据补码定义:Y补=2n+1+Y mod 2n+1 因此求阶码和(移码表示)可用如下方式完成:X移+Y补=2n+X+2n+1+Y=2n+1+(2n+(X+Y) =X+Y移 mod 2n+1同理有 X移+-Y

43、补=X-Y移。执行移码加或减时,取加数或减数符号位的反码(补码)进行运算。即被加(减)数为移码,加(减)数为补码。直接用移码实现求阶码之和 使用双符号位的阶码相加减,并规定移码(被加数或被减数)的第二个符号位,即最高符号位恒用0参加加减运算。当结果的最高符号位为0时,表明没有溢出。低位符号位为1,表明结果为正;为0时,表明结果为负。溢出条件是结果的最高符号位为1。 溢出时,当低位符号位为0时结果上溢,为1时结果下溢。判定溢出的方法例:阶码用4位表示,其范围为-8到+7 。 (1)当X=+011,Y=+110时,则有X移=01011,Y补=00110, -Y补=11010阶码加 X+Y移= X移

44、+Y补 =01011+ 00110=10001,结果上溢阶码减 X-Y移= X移+-Y补 =01011+ 11010=00101,结果正确,为-3(2)当X=-011,Y=-110时,则有X移=00101,Y补=11010, -Y补=00110阶码加 X+Y移= X移+Y补 =00101+ 11010=11111,结果下溢阶码减 X-Y移= X移+-Y补 =00101+ 00110=01011,结果正确,为+32. 浮点数的舍入处理计算机中,浮点数的尾数有确定的位数,若浮点数的运算结果超过给定的位数,要进行去除多余位数的处理。处理的原则是使本次处理所造成的误差以及按此原则产生的累计误差都比较小

45、。 无条件地丢掉正常尾数最低位之后的全部数值。这种办法被称为截断处理,其好处是处理简单,缺点是影响结果的精度。 保留右移中移出的若干高位的值,然后再按某种规则用这些位上的值修正尾数。这种处理方法被称为舍入处理。舍入方法: 只要尾数最低位为1,或移出去的几位中有1,就把尾数的最低位置1,否则仍保持原有的0值。或者采用更简便的方法,即最低位恒置1的方法。 0舍1入法(相当于十进制中的四舍五入法),即当丢失的最高位的值为1时,把这个1加到最低数值位上进行修正,否则舍去丢失的各位的值,其缺点是要多进行一次加法运算。例3.40 设有5位数(其中有一附加位),用原码或补码表示,舍入后保留4位结果。(0舍1

46、入法)设: X原=0.11011 舍入后X原=0.1110X原=0.11100 舍入后X原=0.1110X补=1.00101 舍入后X补=1.0011X补=1.00100 舍入后X补=1.0010舍入后产生了误差,但误差值小于末位的权值。3. 浮点乘法运算步骤举例说明浮点乘法的运算步骤:例3.41 阶码4位(移码),尾数8位(补码,含1符号位),阶码以2为底。运算结果仍取8位尾数。 设:X=2-50.1110011, Y=23(-0.1110010)运算过程中阶码取双符号位。(1) 求乘积的阶码。乘积的阶码为两数阶码之和。 EX+EY移=EX移+EY补=00011+00011=00110(2)

47、 尾数相乘。用定点数相乘的办法, XY补=1.0011001 1001010 (尾数部分) 高位部分高位部分低位部分低位部分(3) 规格化处理。本例尾数已规格化,不需要再处理。如未规格化,需左规。(4) 舍入。尾数(乘积)低位部分的最高为1,需要舍入,在乘积高位部分的最低位加1,因此 XY补=1.0011010 (尾数部分)(5) 判溢出。阶码未溢出,故结果为正确。XY=2-2(-0.1100110) 在求乘积的阶码(即两阶码相加)时,有可能产生上溢或下溢的情况;在进行规格化处理时,有可能产生下溢。 4. 浮点数乘法运算(阶码的底为8或16)N=8EM 或 N=16EM阶码E和尾数M还都是用二

48、进制表示的,其运算规则与阶码以2为底基本相同,但关于对阶和规格化操作有新的相应规定。l当阶码以8为底时,只要尾数满足1/8M1或 -1M-1/8就是规格化数。执行对阶和规格化操作时,每当阶码的值增或减1,尾数要相应右移或左移三位。 l当阶码以16为底时,只要尾数满足1/16M1或 -1M-1/16就是规格化数。执行对阶和规格化操作时,阶码的值增或减1,尾数必须移四位。5. 浮点数除法运算步骤(1 1)求商的阶码尾数调整:保证尾数调整:保证M MX XM MY Y阶码相加减阶码相加减(2 2)尾数相除)尾数相除(3 3)规格化(4 4)舍入(5 5)判溢出583.6 3.6 运算部件运算部件 1

49、. 1. 定点运算部件定点运算部件 定点运算部件由定点运算部件由算术逻辑运算部件算术逻辑运算部件ALUALU、若、若干个干个寄存器寄存器、移位电路移位电路、计数器计数器、门电路门电路等组等组成。成。 ALUALU部件主要完成加减法部件主要完成加减法算术运算算术运算及及逻辑逻辑运算运算。59602 2浮点运算部件浮点运算部件 通常通常由由阶码运算部件阶码运算部件和和尾数运算部件尾数运算部件组成组成,其各自的结构与定点运算部件相似。其各自的结构与定点运算部件相似。但但阶码部阶码部分仅执行加减法运算分仅执行加减法运算。其尾数部分则执行加减其尾数部分则执行加减乘除运算乘除运算,左规时有时需要左移多位。

50、为加速,左规时有时需要左移多位。为加速移位过程,有的机器设置了可移动多位的电路移位过程,有的机器设置了可移动多位的电路。3.7 3.7 数据校验码数据校验码 计算机系统中的数据,在读写、存取和传送的过程中可计算机系统中的数据,在读写、存取和传送的过程中可能产生错误。能产生错误。为减少和避免这类错误,一方面是精心设计为减少和避免这类错误,一方面是精心设计各种电路,提高计算机硬件的可靠性;另一方面是在数据各种电路,提高计算机硬件的可靠性;另一方面是在数据编码上找出路,编码上找出路,即采用某种编码法,通过少量的附加电路,即采用某种编码法,通过少量的附加电路,使之能发现某些错误,甚至能确定出错位置,进

51、而实现自使之能发现某些错误,甚至能确定出错位置,进而实现自动改错的能力。动改错的能力。 数据校验码数据校验码: :是一种常用的带有发现某些错误或自动改是一种常用的带有发现某些错误或自动改错能力的数据编码方法。错能力的数据编码方法。( (查错与纠错查错与纠错) ) 实现原理:是加进一些实现原理:是加进一些冗余码冗余码,使合法数据编码出错变,使合法数据编码出错变成非法数据来发现或改正数据。成非法数据来发现或改正数据。常用的数据校验码:常用的数据校验码:奇偶校验码、海明校验码和循环冗余校验奇偶校验码、海明校验码和循环冗余校验码。码。 采用采用冗余校验冗余校验方法:方法: 即在基本的有效数据外,再扩即

52、在基本的有效数据外,再扩充部分位,增加部分(冗余部分)被称为充部分位,增加部分(冗余部分)被称为校校验位验位。将校验位与数据位一起按某种规则编。将校验位与数据位一起按某种规则编码,写入存储器或向外发送。当从存储器读码,写入存储器或向外发送。当从存储器读出或接收到外部传入的代码时,再按相应的出或接收到外部传入的代码时,再按相应的规则进行判读。若不符合约定的规则,则表规则进行判读。若不符合约定的规则,则表示出现错误。根据错误的特征进行修正恢复。示出现错误。根据错误的特征进行修正恢复。几个名词概念几个名词概念码字:由若干代码组成的一个字。码字:由若干代码组成的一个字。如如84218421码中码中 0

53、110 0110( 6 6 ),),01110111( 7 7 )距离:两个码字之间不同的代码个数。距离:两个码字之间不同的代码个数。 8421 8421码中,最小的距离为码中,最小的距离为1 1,如,如00000000和和 0001 0001、00100010和和00110011等;最大距离为等;最大距离为4 4, 如如01110111和和10001000。码距码距( (最小码距最小码距) ):一种码制中任意两个码字间的最小:一种码制中任意两个码字间的最小距离。距离。(合法码到合法码变动的最小位数合法码到合法码变动的最小位数)84218421码的码距为码的码距为1 1。码距为。码距为1 1,

54、即不能查错也不,即不能查错也不能纠错。码距越大,查错、纠错能力越强。能纠错。码距越大,查错、纠错能力越强。码距与检纠错的关系为了检测e个误码,要求最小码距d0应满足: d0 e+1 为了纠正t个误码,要求最小码d0距应满足: d0 2t+1 为了纠正t个误码,同时能检测e个误码(et),要求最小码距d0应满足: d0 e+t+12/20/2022643.7.1 奇偶校验码 奇偶校验码是计算机中广泛采用的检查传输数奇偶校验码是计算机中广泛采用的检查传输数据准确性的方法。据准确性的方法。奇偶校验的原理奇偶校验的原理是:是:在每组数据信息上附加一个校验位,使码距由在每组数据信息上附加一个校验位,使码

55、距由1 1增增加到加到2 2(合法码到合法码变动的最小位数为合法码到合法码变动的最小位数为2 2)。)。若编码若编码中有奇数个二进制位出错了,这个码将变成非法编码。中有奇数个二进制位出错了,这个码将变成非法编码。 如果采用奇校验,则这组数据加上校验码位后如果采用奇校验,则这组数据加上校验码位后数据中数据中1 1的个数应为奇数个。奇校验位形成公式的个数应为奇数个。奇校验位形成公式: : C =XC =X0 0 X X1 1 X Xn-1n-1 如果采用偶校验,则这组数据加上校验码位后如果采用偶校验,则这组数据加上校验码位后数据中数据中1 1的个数应为偶数个。偶校验位形成公式的个数应为偶数个。偶校

56、验位形成公式: : C =XC =X0 0 X X1 1 X Xn-1n-1下面给出对几个字节值的奇偶校验的编码结果:下面给出对几个字节值的奇偶校验的编码结果: 数据数据 奇校验的编码奇校验的编码 偶校码的编码偶校码的编码 00000000 00000000 l l00000000 00000000 0 00000000000000000 010l0l00 010l0l00 0 0010l0100 010l0100 l l01010l0001010l00 01ll1lll 01ll1lll 0 0011l1111 011l1111 1 10l111l1l0l111l1l其中,最高一位为校验位,

57、其余低八位为数据其中,最高一位为校验位,其余低八位为数据位。从中可以看到,校验位的值取位。从中可以看到,校验位的值取O O还是还是1 1,是由,是由数据位中数据位中1 1的个数决定的。的个数决定的。缺点缺点: :这种方案只能发现一这种方案只能发现一位错或奇数个位错,但不能位错或奇数个位错,但不能确定是哪一位错,也不能发确定是哪一位错,也不能发现偶数个位错。现偶数个位错。优点优点: :该方案还是有很好的该方案还是有很好的实用价值。实用价值。12345678DDDDDDDDEV偶校验偶校验位形成位形成奇偶校验的特点:奇偶校验的特点:1、奇偶校验码使数据的码距为、奇偶校验码使数据的码距为2,因而可检

58、出数,因而可检出数据传送过程中奇数个数位出错的情况(一位变动据传送过程中奇数个数位出错的情况(一位变动会使校验位改变,会使校验位改变, d0 e+1 =2););2、实际中两位同时出错的概率极低,奇偶校验法、实际中两位同时出错的概率极低,奇偶校验法简便可靠易行,但它只能发现错误,却不知错在简便可靠易行,但它只能发现错误,却不知错在何处,因而不能自动纠正。何处,因而不能自动纠正。3、 奇偶校验码是一种开销最小,能发现数据代码奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码。中一位出错情况的编码。常用于存储器读写检查,或常用于存储器读写检查,或ASCII字符传送字符传送过程中的检查。过

59、程中的检查。3.7.2 海明校验码海明校验码 海明校验码是海明校验码是Richard HammingRichard Hamming于于19501950年提出的,目前仍年提出的,目前仍广泛使用的一种编码方法。广泛使用的一种编码方法。1 1、原理、原理(1 1)特点:能检测出)特点:能检测出两位同时出错两位同时出错、亦能检测出一位出错并能自亦能检测出一位出错并能自动纠错。动纠错。( (码距码距d d0 0 e+t+1=2+1+1=4 e+t+1=2+1+1=4) )(2 2)实现原理:)实现原理: 在在k k个数据位个数据位之外加上之外加上r r个校验位个校验位,从而形成一个,从而形成一个k+rk

60、+r位位的的新码字新码字,当,当某一位出错某一位出错后,就会后,就会引起相关的几个(引起相关的几个( d d0 0 个)校验位的值发生变化个)校验位的值发生变化,从而达到检错、纠错的目的。,从而达到检错、纠错的目的。 能检测与自动纠正一位错,并发现两位错,校验位能检测与自动纠正一位错,并发现两位错,校验位r r与数与数据位据位k k应满足下述关系:应满足下述关系:2r-1k+r r ( (一位出错并纠错且发现两位错一位出错并纠错且发现两位错 d0 e+t+1=2+1+1=4) )数据位数据位k k与校验位与校验位r r的对应关系:的对应关系: 2 2、编码规则、编码规则 若海明码的最高位号为若

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论