版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第三章 运算方法与运算器 2 运算方法与运算器 n运算:四则运算运算:四则运算 定点定点 加法加法 减法减法:通过补码转为加法运算:通过补码转为加法运算 乘乘/除法除法:加法和移位运算:加法和移位运算 浮点浮点:阶码和尾数定点运算:阶码和尾数定点运算 逻辑运算逻辑运算 3 运算方法与运算器 n运算器的硬件组织层次:运算器的硬件组织层次: 1.将一位二进制加法规则转换为逻辑表达式,采用基本将一位二进制加法规则转换为逻辑表达式,采用基本 门电路构成一位全加器。门电路构成一位全加器。 2.n位全加器连同进位链构成位全加器连同进位链构成n位并行加法器。位并行加法器。 3.采用多路选择逻辑实现多种输
2、入组合选择,从而将加采用多路选择逻辑实现多种输入组合选择,从而将加 法器扩展为多功能算术逻辑部件法器扩展为多功能算术逻辑部件ALU。 4.加法器与移位寄存器组合构成乘法器和除法器。加法器与移位寄存器组合构成乘法器和除法器。 5.定点整数阶码运算器和定点小数尾数运算器组合构成定点整数阶码运算器和定点小数尾数运算器组合构成 浮点运算器。浮点运算器。 6.ALU加上寄存器组构成一般的运算器。加上寄存器组构成一般的运算器。 4 机器数的移位与舍入 n数据移位数据移位 逻辑移位逻辑移位 循环移位循环移位 算术移位算术移位 5 机器数的移位与舍入 1.逻辑移位:寄存器中的数据不具有数逻辑移位:寄存器中的数
3、据不具有数 值的概念,所以无论左值的概念,所以无论左/右移都是最右移都是最 左左/右端位丢失,末位触发器补右端位丢失,末位触发器补0。 A1 A2 A3 A4 A5 A6 A7 A8 1 0 1 1 0 1 0 1 右移 0 0 1 0 1 1 0 1 0 补入 丢失 6 机器数的移位与舍入 A1 A2 A3 A4 A5 A6 A7 A8 1 0 1 1 0 1 0 1 左移 0 1 1 0 1 0 1 0 0 补入 丢失 7 机器数的移位与舍入 2.循环移位:寄存器两端触发器有移位循环移位:寄存器两端触发器有移位 通路,形成闭合移位环路,移位时信通路,形成闭合移位环路,移位时信 息在环路内循
4、环流动。息在环路内循环流动。 A1 A2 A3 A4 A5 A6 A7 A8 1 0 1 1 0 1 0 1 右移 1 1 0 1 1 0 1 0 8 机器数的移位与舍入 A1 A2 A3 A4 A5 A6 A7 A8 1 0 1 1 0 1 0 1 左移 0 1 1 0 1 0 1 1 9 机器数的移位与舍入 3.算术移位:算术移位: 指寄存器中带符号数据的移位,移位时:指寄存器中带符号数据的移位,移位时: 符号位不变符号位不变 数值左数值左/右移相当于乘右移相当于乘/除除2 带符号数的移动规则有原码、补码、反码有关带符号数的移动规则有原码、补码、反码有关 10 机器数的移位与舍入 (1)原
5、码原码 n对于正数,原码移位规则:对于正数,原码移位规则: 符号位不变(为符号位不变(为0) 右右/左移时最高左移时最高/低位补低位补0,最低,最低/高位数据丢失。高位数据丢失。 A1 A2 A3 A4 A5 A6 A7 A8 0 0 1 0 1 1 0 0 右移 0 0 0 1 0 1 1 0 补入 丢失 不变 验算:右移一位除2 (00101100)2=(44)10 (00010110)2=(22)10 11 机器数的移位与舍入 A1 A2 A3 A4 A5 A6 A7 A8 0 0 1 0 1 1 0 0 左移 0 1 0 1 1 0 0 0 补入 丢失 验算:左移一位乘2 (00101
6、100)2=(44)10 (01011000)2=(88)10 12 机器数的移位与舍入 n对于负数,移位规则随码制的不同而不同。对于负数,移位规则随码制的不同而不同。 原码表示的数是由符号位和绝对值组成,执行算术移位原码表示的数是由符号位和绝对值组成,执行算术移位 时,符号位不变,只是绝对值移位,末端补时,符号位不变,只是绝对值移位,末端补0,最高,最高/低低 数值位丢失。数值位丢失。 A1 A2 A3 A4 A5 A6 A7 A8 1 1 0 1 0 1 1 1 右移 1 0 1 0 1 0 1 1 补入 丢失 不变 验算:右移一位除2 (11010111)2=(-87)10 (10101
7、011)2=(-43)10 13 机器数的移位与舍入 A1 A2 A3 A4 A5 A6 A7 A8 1 0 1 1 0 1 0 1 左移 1 1 1 0 1 0 1 0 补入 丢失 验算:左移一位乘2 (10110101)2=(-53)10 (11101010)2=(-106)10 14 机器数的移位与舍入 综述:综述:原码表示的正负数的算术移位规则原码表示的正负数的算术移位规则: 符号位不变,只是绝对值移位符号位不变,只是绝对值移位 末端补末端补0 最高最高/低数值位丢失低数值位丢失 15 机器数的移位与舍入 (2) 补码补码 n负数补码:负数补码: 右移:例右移:例x=-0101 100
8、0 则则 不移位不移位 x=-0101 1000 x补补=1010 1000 右移一位右移一位(x/2)=-0010 1100 x/2补补=1101 0100 右移二位右移二位(x/4)=-0001 0110 x/4补补=1110 1010 所以,右移时,补码的符号位也右移,符号位不变,最低位丢失。所以,右移时,补码的符号位也右移,符号位不变,最低位丢失。 A1 A2 A3 A4 A5 A6 A7 A8 1 0 1 1 0 1 0 1 右移 1 1 0 1 1 0 1 0 丢失 16 机器数的移位与舍入 根据补码与原码的对应关系,最高有效位补根据补码与原码的对应关系,最高有效位补1 1相当于原
9、码移位中相当于原码移位中 补补0 0。负数的符号位。负数的符号位1 1移送到最高有效位就可实现补移送到最高有效位就可实现补1 1。 左移:例x=-0001 0110 则 不移位 x=-0001 0110 x补=1110 1010 左移一位(2x)=-0010 1100 2x补=1101 0100 左移二位(4x)=-0101 1000 4x补=1010 1000 所以,左移时,补码的末端补所以,左移时,补码的末端补0,数值最高位移入符号,数值最高位移入符号 位。但是如果符号位后一位是位。但是如果符号位后一位是0,左移时会产生溢出。,左移时会产生溢出。 17 机器数的移位与舍入 A1 A2 A3
10、 A4 A5 A6 A7 A8 1 0 1 1 0 1 0 1 左移 0 1 1 0 1 0 1 0补入 丢失 符号位出错 说明说明A为绝对值较大的负数,左移扩大为绝对值较大的负数,左移扩大2倍后超出了表倍后超出了表 示范围产生溢出。示范围产生溢出。 18 机器数的移位与舍入 解决方法:可用双符号位解决方法:可用双符号位1111表示负数,表示负数, 0000表示正数。出现表示正数。出现1010则表示移位负数溢出则表示移位负数溢出。 0101表示正数溢出。表示正数溢出。 A11 A12 A3 A4 A5 A6 A7 A8 1 1 . 0 1 1 0 1 0 1 左移 1 0 . 1 1 0 1
11、0 1 0 丢失 补入 19 机器数的移位与舍入 综述:补码表示的正负数的算术移位规则:综述:补码表示的正负数的算术移位规则: n符号位参与移位操作符号位参与移位操作 n右移时,末端补入符号位右移时,末端补入符号位 n左移时,末端补左移时,末端补0 20 机器数的移位与舍入 (3) 反码表示的反码表示的正正负数移位规则负数移位规则 符号参与移位操作符号参与移位操作 对于正数,移位时末端补对于正数,移位时末端补0 0 对于负数,移位时末端补对于负数,移位时末端补1 1 遵循一个规则:遵循一个规则:保持真值正确保持真值正确。 21 机器数的移位与舍入 例例3.1 3.1 已知已知 XX补 补=0.
12、1011, =0.1011, YY补 补=1.1011, =1.1011, 求算术左移、求算术左移、 逻辑左移、算术右移和逻辑右移逻辑左移、算术右移和逻辑右移( (一位一位) )后的值。后的值。 解:解: XX补 补算术左移后的值: 算术左移后的值:1.0110(1.0110(溢出溢出 原数为正数原数为正数) ) YY补 补算术左移后的值: 算术左移后的值:1.01101.0110(原数为负数)(原数为负数) XX补 补逻辑左移后的值: 逻辑左移后的值:1.0110 1.0110 YY补 补逻辑左移后的值: 逻辑左移后的值:1.0110 1.0110 XX补 补算术右移后的值: 算术右移后的值
13、:0.0101 0.0101 YY补 补算术右移后的值: 算术右移后的值:1.11011.1101 XX补 补逻辑右移后的值: 逻辑右移后的值:0.0101 0.0101 YY补 补逻辑右移后的值: 逻辑右移后的值:0.11010.1101 22 舍入问题 1恒舍(切断)恒舍(切断) 这是一种最容易实现的舍入方法,无论多余部分为这是一种最容易实现的舍入方法,无论多余部分为 何代码,一律舍去,而保留部分的内容不作任何改变。何代码,一律舍去,而保留部分的内容不作任何改变。 2冯冯诺依曼舍入法诺依曼舍入法 这种舍入法又称为恒置这种舍入法又称为恒置1法,即不论多余部分为何代法,即不论多余部分为何代 码
14、,都把保留部分的最低位置码,都把保留部分的最低位置1。 3下舍上入法下舍上入法 下舍上入法在十进制中就是四舍五入,在二进制下舍上入法在十进制中就是四舍五入,在二进制 中则是中则是0舍舍1入。用将要舍去部分的最高位作为判断标入。用将要舍去部分的最高位作为判断标 志,以决定保留部分是否加志,以决定保留部分是否加1。如该位为。如该位为0,则舍去整,则舍去整 个多余部分(相当于恒舍);如该位为个多余部分(相当于恒舍);如该位为1,则在保留部,则在保留部 分的最低位上加分的最低位上加1。 23 定点数加减运算 n浮点数的运算实际上是转化为阶码与尾浮点数的运算实际上是转化为阶码与尾 数的定点运算来进行的。
15、数的定点运算来进行的。 n目前的计算机普遍采用补码进行加减运目前的计算机普遍采用补码进行加减运 算。算。 24 补码加减运算 1补码加法补码加法 X+YX+Y补 补= =XX补 补+ +YY补 补 ( (mod M) mod M) 设补码是以设补码是以M M为模的。为模的。 对于纯小数模为对于纯小数模为2 2 对于对于n n位(含位(含1 1位符号位)纯整数,模为位符号位)纯整数,模为2 2n n。 25 补码加减运算 补码加法运算的规则是:补码加法运算的规则是: 两数不管正负,均用补码表示两数不管正负,均用补码表示 符号位应当作数值参加运算符号位应当作数值参加运算 按二进制运算规则,逢按二进
16、制运算规则,逢2 2进进1 1 符号位相加所产生的进位要丢掉符号位相加所产生的进位要丢掉( (以以M M为模为模) ) 结果为补码结果为补码( (其符号即为和的正确符号其符号即为和的正确符号) ) 26 补码加减运算 以模以模2(纯小数)(纯小数)补码为例,分四种情况可以证明该式的正确性。补码为例,分四种情况可以证明该式的正确性。 (1)X0, Y0, 则则X+Y0 正数的补码与真值有相同的表示形式,即正数的补码与真值有相同的表示形式,即 X补 补=X, Y补补=Y, ,X+Y补补=X+Y 所以所以 X补 补+Y补补=X+Y=X+Y补补。 。 (2)X0,Y0或或X+Y0时,时,2+(X+Y)
17、2,2(10)2为符号位进位,即模丢掉。为符号位进位,即模丢掉。 又因为又因为(X+Y)0,所以所以X补 补+Y补补=X+Y=X+Y补补。 。 当当X+Y0时,时,2+(X+Y)2。 又因为又因为(X+Y)0,所以所以X补 补+Y补补=2+X+Y=X+Y补补 (3)X0,把把X与与Y的位置对调即可得证。的位置对调即可得证。 27 补码加减运算 (4)X0,Y0,则则X+Y0 X补 补=2+X Y补补=2+Y X补 补+Y补补=2+(2+X+Y) 由于由于X+Y为负数,其绝对值又小于为负数,其绝对值又小于1,那么,那么(2+X+Y)就一定是小于就一定是小于2而而 大于大于1的数,所以上式等号右边
18、的的数,所以上式等号右边的2必然丢掉,又因为必然丢掉,又因为X+Y0,所以所以X补 补 +Y补 补=(2+X+Y)=2+(X+Y)=X+Y补补。 。 至此证明了在模为至此证明了在模为2的任意两个数的补码之和等于该两个数之和的补的任意两个数的补码之和等于该两个数之和的补 码。码。 28 补码加减运算 例3.2 x=+0.1011,y=-0.0101,求x+y=? 解:x补=0.1011,y补=1.1011 x补 = 0.1011 +) y补 = 1.1011 x+y补 =1 0.0110 丢掉 得x+y补=0.0110,x+y=+0.0110 验算: x=0.1011=(0.6875)10 Y=
19、(-0.3125)10 X+Y=(0.375)10 =(0.0110)2 0.50.250.1250.0625 29 补码加减运算 例3.3X=-11001,Y=-00011,求X+Y=? 解:x补=1,00111,y补=1,11101 x补 = 1,00111 +)y补 = 1,11101 x+y补 =1 1,00100 丢掉 得到x+y补=1,00100,结果x+y=-11100 验算:x=-11001=(-25)10 Y=(-3)10 X+Y=(-28)10 =(-11100)2 30 补码加减运算 2补码减法 根据补码加法公式可推出: x-y补=x+(-y)补=x补+-y补 (mod
20、M) 因此,求得-y补就可以变减法为加 法。 31 补码加减运算 已知y补求-y 补: 将y补连同符号位一起求反,末位加“1” (定点小数中这个“1”是2-n)。 由y补求-y补的过程称之为对y补 变补(求补) 32 补码加减运算 例34x=-0.1101,y=-0.0110,求x-y=? 解:x补=1.0011, y补=1.1010,-y补=0.0110 x补 = 1.0011 +)-y补 = 0.0110 x-y补 = 1.1001 x-y补=1.1001,x-y=-0.0111 验算: x=-0.1101 =(-0.8125)10 Y=(-0.375)10 X-Y=(-0.4375)10
21、 =(-0.0111)2 33 补码加减运算 补码加减法的公式适用于 定点小数(采用一个符号位时,M=2) 定点整数(包括一位符号位在内有n位时,M=2n)。 34 补码加减运算 3补码加减运算规则补码加减运算规则 归纳补码加减运算,总结其规则如下:归纳补码加减运算,总结其规则如下: (1) (1) 参加运算的两个操作数均用补码表示;参加运算的两个操作数均用补码表示; (2) (2) 符号位作为数的一部分参加运算;符号位作为数的一部分参加运算; (3) (3) 若做加法,则两数直接相加。若做减法,若做加法,则两数直接相加。若做减法, 则将被减数与减数的负数的机器数相加;则将被减数与减数的负数的
22、机器数相加; (4) (4) 运算结果用补码表示;运算结果用补码表示; (5) (5) 符号位的进位为模值,应该丢掉。符号位的进位为模值,应该丢掉。 35 补码的溢出判断 1溢出的产生溢出的产生 一旦运算结果超出了机器所能表示数一旦运算结果超出了机器所能表示数 值的范围,就会产生溢出。值的范围,就会产生溢出。 将两正数相加产生的溢出称为正溢;将两正数相加产生的溢出称为正溢; 反之,两负数相加产生的溢出称为负溢。反之,两负数相加产生的溢出称为负溢。 36 补码的溢出判断 2. 溢出的判断方法溢出的判断方法 判断溢出的方法可采用下述三种。判断溢出的方法可采用下述三种。 设操作数为:设操作数为: X
23、 X补 补 = = X Xf f.X.X1 1X X2 2X Xn n Y Y补 补 = = Y Yf f.Y.Y1 1Y Y2 2Y Yn n 其和其和( (差差) )为:为:S S补 补 = = S Sf f.S.S1 1S S2 2S Sn n 37 补码的溢出判断 (1) 采用单符号位的判断方法采用单符号位的判断方法 两同号数相加时,如果结果的符号与参加运算的操两同号数相加时,如果结果的符号与参加运算的操 作数符号相反,则表明有溢出;作数符号相反,则表明有溢出; 两异号数相减时,如果结果的符号与被减数的符号两异号数相减时,如果结果的符号与被减数的符号 相反,也表明有溢出。相反,也表明有
24、溢出。 (-3)+(-3)=+? 3+3=-? 38 补码的溢出判断 (1) 采用单符号位的判断方法采用单符号位的判断方法 两同号数相加时,如果结果的符号与参加运算的操两同号数相加时,如果结果的符号与参加运算的操 作数符号相反,则表明有溢出;作数符号相反,则表明有溢出; 两异号数相减时,如果结果的符号与被减数的符号两异号数相减时,如果结果的符号与被减数的符号 相反,也表明有溢出。相反,也表明有溢出。 (+3)-(-6)=-? (-3)-6=+? 39 补码的溢出判断 加减法的溢出判断的逻辑表达式:加减法的溢出判断的逻辑表达式: f fff ffSYXSYXV V=1代表溢出Xf、Yf、Sf分别
25、代表相加的两个操作数的符 号和结果的符号 40 补码的溢出判断 例3.5x=-0.100,y=-0.101,求x+y=? 解:x+y补=x补+y补=1.100+1.011=1 0.111 两负数相加,结果应为负数,但运算结果为正数,表明有 溢出发生,出错。 丢失 验算:x=(-0.5)10 Y=(-0.625)10 X+Y=(-1.125)10-1 所以,超出纯小数表示范围,负上溢出 -10 41 补码的溢出判断 例3.6x=+100,y=-110,求x-y=? 解:x-y补=x补+-y补=0,100+0,110=1,010 一个正数减去一个负数(转换为两正数相加),结果应为正 数,但计算结果
26、为负数,表明出错,有溢出发生。 验算:x=(4)10 Y=(-6)10 X-Y=(10)10 四位二进制数最大正数(0111)2=(7)10-23 46 补码的溢出判断 例3.8x=+0.100,y=-0.101,求x-y补=? 解:x补=00.100,y补=11.011,-y补=00.101 x补 = 00.100 +) -y补 = 00.101 x-y补 = 01.001 结果的两符号位不同,因此有溢出发生(正溢出)。 验算:x=0.5 y=-0.625 x-y=1.125 4位二进制纯小数最大为 (0.111)2=(0.875)10 47 补码定点加减运算的实现 图3-1 n位 二 进
27、制 数 补码 加 减法 器/ / SnSfS1 C0 yf yn XfX1Xn Cf y1 ADD SUB 控 制 / / ADD0 SUB1 (N + 1) 位 加 法 器 异或 X+(Y SUB)+C0 48 移码加减运算 n移码加减运算主要是用于浮点计算中的阶码运算,移码加减运算主要是用于浮点计算中的阶码运算, 故主要掌握定点整数的移码加减法。故主要掌握定点整数的移码加减法。 移码的定义为:移码的定义为: XX移 移=2 =2n-1 n-1+X +X -2-2n-1 n-1X X2 2n-1 n-1 XX移 移+ +YY移 移=2 =2n-1 n-1+X+2 +X+2n-1 n-1+Y=
28、2 +Y=2n-1 n-1+ +( (2 2n-1 n-1+X+Y +X+Y)=2=2n-1 n-1+X+Y +X+Y移 移 可见,用移码实现求和时必须对结果的符号位进行可见,用移码实现求和时必须对结果的符号位进行 校正,即对符号位求反才是结果的正确符号位。校正,即对符号位求反才是结果的正确符号位。 49 移码加减运算 执行移码加减运算时,可以借用加数或负执行移码加减运算时,可以借用加数或负 减数的补码。根据移码与补码的关系可知就是减数的补码。根据移码与补码的关系可知就是 对加数或负减数的移码的符号位取反即可求得对加数或负减数的移码的符号位取反即可求得 加数或负减数的补码。加数或负减数的补码。
29、 XX移 移+ +YY补 补 =2=2n-1 n-1+X+2 +X+2n n+Y+Y =2 =2n n + +( (2 2n-1 n-1 + +( (X+YX+Y) =X+Y =X+Y移 移 ( (mod 2mod 2n n) 同理:同理: XX移 移+- +-YY补 补= =X-YX-Y移 移 50 移码加减运算 移码加减运算时,一般采用双符号位,规定移码加减运算时,一般采用双符号位,规定 移码最高符号位恒为移码最高符号位恒为“0”“0”。为了判断其结果。为了判断其结果 的正确性,结果双符号位的含义定义如下:的正确性,结果双符号位的含义定义如下: S Sf1 f1S Sf2 f2 = = 0
30、 00 0结果为结果为负数负数,无溢出,无溢出 S Sf1 f1S Sf2 f2 = = 0 01 1结果为结果为正数正数,无溢出,无溢出 S Sf1 f1S Sf2 f2 = 10 = 10结果正溢结果正溢 S Sf1 f1S Sf2 f2 = 11 = 11 结果负溢结果负溢 由变换规则, 移码的正数符 号位为1,负 数符号位为0。 51 移码加减运算 例例3.93.9x=+011x=+011,y=110y=110,求求 x+yx+y移 移=? =? x-yx-y 移 移=? =? 解:解:x x补 补=0,011 =0,011 x x移 移=1,011 =1,011 双符号双符号x x移
31、 移= =01 01,011,011 y y补 补=00,110 =00,110 - -y y补 补=11,010 =11,010(连同符号位,按位取反加(连同符号位,按位取反加1 1) x+yx+y移 移 = = x x移 移 + + y y补 补 = 01,011 + 00,110 = 10,001 = 01,011 + 00,110 = 10,001 结果正溢结果正溢 x-yx-y移 移 = = x x移 移 + + - -y y补 补 = 01,011 + 11,010 = 00,101 = 01,011 + 11,010 = 00,101结果正确(结果正确(-3-3) 注:移注:移=
32、 =00,101=0,101 00,101=0,101 补补=1,101=1,101(符号位取反)(符号位取反) 原原=1,011=1,011(即(即-3-3) 52 移码加减运算 例例3.103.10 x=-011x=-011,y=-110y=-110,求求 x+yx+y移 移=? =? x-yx-y 移 移=? =? 解:解:x x补 补=1,101 =1,101 x x移 移=0,101 =0,101 双符号双符号x x移 移= =00 00,101,101 y y补 补=11,010 =11,010 - -y y补 补=00,110 =00,110 x+yx+y移 移 = = x x移
33、 移 + + y y补 补 = 00,101 + 11,010 = 11,111 = 00,101 + 11,010 = 11,111 结果负溢结果负溢 x-yx-y移 移 = = x x移 移 + + - -y y补 补 = 00,101 + 00,110 = 01,011 = 00,101 + 00,110 = 01,011 结果正确(结果正确(+3+3) 53 作业 n3.2 单符号单符号 n3.3 双符号双符号 前期的学习内容:前期的学习内容: n各种码各种码 n定点、浮点数及其表示范围定点、浮点数及其表示范围 n校验校验 n移位舍入移位舍入 n补码、移码加法补码、移码加法 54 定点
34、数乘法运算 n原码一位乘法原码一位乘法 : 一一. .两个数的原码相乘时,积的符号位单独处理,数值两个数的原码相乘时,积的符号位单独处理,数值 部分是两数的绝对值之积。部分是两数的绝对值之积。 二进制的乘法手算过程:二进制的乘法手算过程: 例如,例如,x=0.1101x=0.1101,y=-0.1011y=-0.1011,求求x xy=?y=? 0.1101 0.1101 0.10110.1011 1101 1101 1101 1101 0000 0000 +)1101 +)1101 0.10001111 0.10001111 由于由于x为正数,为正数,y为负数,所以为负数,所以xy=-0.1
35、0001111 称Xyi为位积 55 定点数乘法运算 在计算机中实现原码乘法时,不能直接照搬在计算机中实现原码乘法时,不能直接照搬 上述方法。这是因为:上述方法。这是因为: 1. 1.在加法器内很难实现多个数据同时相加;在加法器内很难实现多个数据同时相加; 2. 2.加法器的位数一般与寄存器位数相同,加法器的位数一般与寄存器位数相同, 而不是寄存器位数的两倍。而不是寄存器位数的两倍。 56 定点数乘法运算 二二. .机器运算算法机器运算算法( (接上例接上例) ): X XY=XY=X(0.1011)(0.1011) =X =X(0.1+0.00+0.001+0.0001)(0.1+0.00+
36、0.001+0.0001) =0.1X+0.00X+0.001X+0.0001X =0.1X+0.00X+0.001X+0.0001X =2 =2-1 -1X+2 X+2-2 -20 0X+2 X+2-3 -3X+2 X+2-4 -4X X =2 =2-1 -1(X+2 (X+2-1 -1(0+2 (0+2-1 -1(X+2 (X+2-1 -1(X+0) (X+0) P1 P2 P3 P4 右移 P0 57 定点数乘法运算 可见:可见:把把n+1n+1位位( (含符号位含符号位) )乘转化为乘转化为n n次次“累加与移位累加与移位”。 每一次只求一位乘数所对应的新部分积每一次只求一位乘数所对应
37、的新部分积,并与原部分积并与原部分积 作一次累加;作一次累加; 原部分积的右移来代替新部分积的左移。原部分积的右移来代替新部分积的左移。 用原码实现乘法运算是十分方便的。用原码实现乘法运算是十分方便的。 58 定点数乘法运算 二、原码一位乘法的运算规则二、原码一位乘法的运算规则 被乘数:被乘数:X=X=x xf f.x.x1 1x x2 2x xn n 乘数:乘数: Y=Y=y yf f.y.y1 1y y2 2y yn n 积: 积: C=C=c cf f.c.c1 1c c2 2c cn n 式中,式中,x xf f,y yf f, ,c cf f为符号位。为符号位。则则 Cf= |C|=
38、|X|Y|Y| ff yx 59 定点数乘法运算 求求C C的运算规则如下:的运算规则如下: (1 1) 被乘数和乘数均取绝对值参加运算,符号位单独考虑。被乘数和乘数均取绝对值参加运算,符号位单独考虑。 (2 2) 被乘数取双符号,部分积的长度与被乘数相同,初值被乘数取双符号,部分积的长度与被乘数相同,初值P P0 0为为0 0。 (3 3) 从乘数的最低位从乘数的最低位y yn n开始判断:开始判断: 若若y yn n-i+1 -i+1=1 =1,则部分积则部分积PiPi加被乘数加被乘数x x,然后右移一位;然后右移一位; 若若y yn n-i+1 -i+1=0 =0,则部分积则部分积PiP
39、i加上加上0 0,然后右移一位。,然后右移一位。 移位时连同符号位一起移位移位时连同符号位一起移位 (4 4)重复步骤()重复步骤(3 3),判断),判断n n次。次。最终结果最终结果C=Cf.C=Cf.PnPn 图图3-2 原码一位乘法的算法流程图原码一位乘法的算法流程图 P61 P61 60 定点数乘法运算 例3.11x=0.1101,y=-0.1011,求xy原=? 解:部分积 乘数 判断位(yn) 00.0000 yf.101 1 +00.1101 00.1101 00.0110 1 yf.10 1 +00.1101 01.0011 00.1001 11 yf.1 0 +00.0000
40、 00.1001 00.0100 111 yf. 1 +00.1101 01.0001 00.1000 1111 yf 1)P0=0,i=0 2)y4=1, 3)加x 4)右移一位,得P1,i=1 整体右移,最后一位丢失 61 定点数乘法运算 例3.11x=0.1101,y=-0.1011,求xy原=? 解:部分积 乘数 判断位(yn) 00.0000 yf.101 1 +00.1101 00.1101 00.0110 1 yf.10 1 +00.1101 01.0011 00.1001 11 yf.1 0 +00.0000 00.1001 00.0100 111 yf. 1 +00.1101
41、 01.0001 00.1000 1111 yf 1)y3=1,加 x 2)加x 3)右移一位,得P2,i=2 62 定点数乘法运算 例3.11x=0.1101,y=-0.1011,求xy原=? 解:部分积 乘数 判断位(yn) 00.0000 yf.101 1 +00.1101 00.1101 00.0110 1 yf.10 1 +00.1101 01.0011 00.1001 11 yf.1 0 +00.0000 00.1001 00.0100 111 yf. 1 +00.1101 01.0001 00.1000 1111 yf 1) y2=0, 2)加0 3)右移一位,得P3,i=3 6
42、3 定点数乘法运算 例3.11x=0.1101,y=-0.1011,求xy原=? 解:部分积 乘数 判断位(yn) 00.0000 yf.101 1 +00.1101 00.1101 00.0110 1 yf.10 1 +00.1101 01.0011 00.1001 11 yf.1 0 +00.0000 00.1001 00.0100 111 yf. 1 +00.1101 01.0001 00.1000 1111 yf 1) y1=1 2)加|x| 3)右移一位,得P4,i=4 64 定点数乘法运算 由于由于 C Cf f= = =1= = =1 所以所以 x xyy原 原=1.100011
43、11 =1.10001111 从例中可见:从例中可见: (1) 字长字长n+1位数参加运算要做位数参加运算要做n次相加和移位操作,计算次相加和移位操作,计算 机中可利用计数器计数加以控制;机中可利用计数器计数加以控制; (2) 用相加和移位操作实现了乘法运算。用相加和移位操作实现了乘法运算。 ff yx 10 65 定点数乘法运算 图 3 - 3 原 码 一 位 乘 法 逻 辑 结 构 图 R2被 乘 数 X yn & R0 部 分 积 乘 数 y yn R1 移 位 信 号 计 数 器 i i & T F 结 束启 动 + 1 Pr = 1 Xf yf R0R1连通、右移 1)启动信号使R0
44、、i清0,F置1 3)脉冲到来,移位 2)依据yn判断加x还是0 66 补码一位乘法 1补码一位乘法的原理补码一位乘法的原理 被乘数被乘数 XX补 补 = = x x0 0.x.x1 1x x2 2x xn n, , 乘数乘数 YY补 补 = = y y0 0.y.y1 1y y2 2y yn n 积 积 CC补 补 = = c c0 0.c.c1 1c c2 2c cn n 67 补码一位乘法 (1)(1) X正负任意数,正负任意数,Y Y为正数为正数 XX补 补 = 2+ = 2+X X = 2 = 2n n2+X (mod 2)2+X (mod 2) = 2 = 2n+1 n+1+X (
45、mod 2) +X (mod 2) Y Y补 补 = =Y Y 则:则: xx补 补 yy补 补=2 =2n+1 n+1Y+X Y+XY Y = =2 2n+1 n+1( (y y0 0.y .y1 1y y2 2y yn n) )+X+XY Y =2 =2( (y y0 0y y1 1y y2 2y yn n)+X)+XY Y =2 =2(y(y1 1y y2 2y yn n)+X)+XY Y =2+X =2+XY Y =x =xyy补 补 xxyy补 补= = x x补 补 yy补 补 Y0,y0=0 y1y2yn为整数。根据 模的运算性质: 2(y1y2yn)=2 68 补码一位乘法 (
46、2) (2) X X正负任意数,正负任意数,Y Y为负数为负数 XX补 补= =x x0 0.x .x1 1x x2 2x xn n YY补 补=1. =1.y y1 1y y2 2y yn n=2+y=2+y Y=Y Y=Y补 补-2 -2 =1. =1.y y1 1y y2 2y yn n-2-2 =0.y =0.y1 1y y2 2y yn n-1-1 X XY=XY=X(0.y(0.y1 1y y2 2y yn n)-X)-X X XYY补 补= =X X(0.y(0.y1 1y y2 2y yn n)补 补+- +-XX补 补 因为因为 (0. (0.y y1 1y y2 2y yn
47、 n)0)0 X XYY补 补= =XX补 补(0. (0.y y1 1y y2 2y yn n) )+-X+-X补 补 69 补码一位乘法 (3) (3) X X和和Y Y正负任意正负任意 将将(1)(1)和和(2)(2)两种情况综合起来,得:两种情况综合起来,得: X XYY补 补= =XX补 补(0. (0.y y1 1y y2 2y yn n)+-X)+-X补 补 y y0 0 =X =X补 补(- (-y y0 0+0.y+0.y1 1y y2 2y yn n) ) =X =X补 补- -y y0 0+ +y y1 12 2-1 -1+y +y2 22 2-2 -2+ + +y yn
48、 n2 2-n-n =X =X补 补- -y y0 0+ +(y(y1 1-y-y1 12 2-1 -1) )+(y +(y2 22 2-1 -1-y -y2 22 2-2 -2)+ )+(+(y yn n2 2-(n-1) -(n-1)- -y yn n2 2-n-n) ) =X =X补 补( (y y1 1-y-y0 0)+(y)+(y2 2-y-y1 1) )2 2-1 -1+ +( +(y yn n- -y yn n-1 -1) )2 2-(n-1) -(n-1)+(0- +(0-y yn n) )2 2-n -n =X =X补 补 乘数的最低位为乘数的最低位为yn,在其后面添加在其后
49、面添加1位位yn+1,其值为其值为0,按机器执行,按机器执行 顺序求出每一步的部分积。顺序求出每一步的部分积。 n i i ii yy 1 1 2)( 70 补码一位乘法 写成递推公式如下:写成递推公式如下: P P0 0补 补 = 0 = 0 P P1 1补 补 = = 2 2-1 -1 P P0 0补 补+ +( (y yn n+1+1- -y yn n) ) x x补 补 ( (y yn n+1 +1=0) =0) P P2 2补 补 = 2 = 2-1 -1 P P1 1补 补+( +(y yn n- -y yn n-1 -1) ) x x补 补 P Pi i补 补 = 2 = 2-1
50、 -1 P Pi-1 i-1 补 补+( +(y yn n-i+2 -i+2- -y yn n-i+1-i+1) ) x x补 补 P Pn n补 补 = 2 = 2-1 -1 P Pn n-1 -1 补 补+( +(y y2 2-y-y1 1) )x x补 补 所以所以x xy y补 补 = = P Pn n+1 +1 补 补= = P Pn n补 补 + ( + (y y1 1-y-y0 0) )x x补 补 请注意:请注意:y y0 0是乘数是乘数y y的符号位,的符号位,y yn n 1 1是附加位。 是附加位。 右移 判断+-X补 71 补码一位乘法 2 2补码一位乘法的运算规则补码
51、一位乘法的运算规则(BoothBooth算法)算法) (1)(1) 符号位参加运算,运算的数均以补码表示;符号位参加运算,运算的数均以补码表示; (2)(2) 被乘数取双符号位参加运算,部分积初值为被乘数取双符号位参加运算,部分积初值为 0 0; (3)(3)乘数取单符号位以决定最后一步是否需要校乘数取单符号位以决定最后一步是否需要校 正,即是否加正,即是否加-xx补 补; ; (4) (4) 乘数末位增设附加位乘数末位增设附加位y yn n+1 +1且初值为 且初值为0 0; (5)(5)由于求得一次部分积要右移一位,由于求得一次部分积要右移一位,yn与与yn+1位位 就构成了各步运算的判断
52、位。从而可以得到算就构成了各步运算的判断位。从而可以得到算 法如表法如表3.1所示。所示。 72 补码一位乘法 (6)(6)按照上述算法进行按照上述算法进行n+1步操作,但第步操作,但第n+1步不再移位,步不再移位, 仅根据仅根据y0与与y1的比较结果作相应的运算即可。的比较结果作相应的运算即可。 (7) 右移时,部分积右移时,部分积0,最高位补,最高位补0,0,按原码移位。符号不变,最高位补0。 部分积0即最高有效位有进位,就表示溢 出,此时除法就不进行,并由程序进行 处理。 96 原码一位除法 设被除数x=0.1001,除数y=0.1011,笔算求xy的过程如下: 0.1101 0.101
53、1 0.10010 被除数/r0 1011 除数右移一位,商上1,-y 1110 r1 1011 除数右移一位,商上1,-y 0110 r2 0000 商上0,不减y 1100 r3 1011 除数右移一位,商上1,-y 1 r4 结果为商Q=0.1101,余数r=r4=0.00000001。 97 原码一位除法 一、原码恢复余数法 符号位单独处理, Qf=xfyf,两个正数参加运算。 (1)余数=|被除(余)数|-|除数| (2)0 上 1 0 上 0 且 +除数(称为恢复余数) 商上0时,由于在比较时已减去了除数,而商又 上0,此时正确的余数应是|被除数|-0,因此需要加 上除数,将余数还
54、原成原来的数值再进行后面的运算。 (3)余数和商左移一位,返回(1)直到商的位数与除数 相同。 (4)左移时末位补0。 例3.15x原=1.1001,y原=0.1011,求x/y原=? 解: |x|原=0.1001 |y|补=0.1011,-|y|补=1.0101 运算过程见下页 Q原=20(xfyf)+|Q原|=1.1101 r4原=20 xf+|r4原|=1.0001 r4原真=20 xf+2-4r4原=1.0000 0001 余数与被除数同号 被除数/余数 商 上商位 说明 00.1001 0.000 0 +-y补 11.0101 11.1110 0.000 0 +00.1011 00.
55、1001 01.0010 0.000 0 +-y补 11.0101 00.0111 0.000 1 00.1110 0.001 0 +-y补 11.0101 00.0011 0.001 1 00.0110 0.011 0 +-y补 11.0101 11.1011 0.011 0 +00.1011 00.0110 00.1100 0.110 0 +-y补 11.0101 00.0001 0.110 1 (x-y)比较 余数r00,商上0 加y恢复余数 左移一位 r0 被除数/余数 商 上商位 说明 00.1001 0.000 0 +-y补 11.0101 11.1110 0.000 0 +00.
56、1011 00.1001 01.0010 0.000 0 +-y补 11.0101 00.0111 0.000 1 00.1110 0.001 0 +-y补 11.0101 00.0011 0.001 1 00.0110 0.011 0 +-y补 11.0101 11.1011 0.011 0 +00.1011 00.0110 00.1100 0.110 0 +-y补 11.0101 00.0001 0.110 1 减y比较 r10,商上1 左移一位 r1 被除数/余数 商 上商位 说明 00.1001 0.000 0 +-y补 11.0101 11.1110 0.000 0 +00.1011
57、 00.1001 01.0010 0.000 0 +-y补 11.0101 00.0111 0.000 1 00.1110 0.001 0 +-y补 11.0101 00.0011 0.001 1 00.0110 0.011 0 +-y补 11.0101 11.1011 0.011 0 +00.1011 00.0110 00.1100 0.110 0 +-y补 11.0101 00.0001 0.110 1 减y比较 r20,商上1 左移一位 r2 被除数/余数 商 上商位 说明 00.1001 0.000 0 +-y补 11.0101 11.1110 0.000 0 +00.1011 00.1001 01.0010 0.000 0 +-y补 11.0101 00.0111 0.000 1 00.1110 0.001 0 +-y补 11.0101 00.0011 0.001 1 00.0110 0.011 0 +-y补 11.0101 11.1011 0.011 0 +00.1011 00.0110 00.1100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年打包封装操作员考前冲刺试题及答案
- 大象版科学五上1.2《修改模型》课件1
- 教育培训行业职业规划
- 重庆南开中学高2027届高三年级质量检测(三)英语+答案
- AI焊接技术革新
- 2026年护理资格考试病理学专项训练卷
- 外科胸椎骨折护理查房
- 2026年图书馆招聘考试图书管理专项训练试卷
- 2026年教师资格证考试《中学历史教学理论》专项训练卷
- 债券市场专题研究:对于债市跨年行情回顾与思考-债市策略思考
- 2025急救知识竞赛试题及答案
- 2026年宁夏银川市贺兰县社区工作者招聘考试试卷-含答案解析
- 肺炎健康宣教资料
- Unit 3 My School Section A Pronunciation 课件(内嵌视频)2026-2027学年人教版七年级英语上册
- 2026年校招:广西农村信用社联合社试题及答案
- 2026年各地高三语文9月联考试题汇编之60组名句默写试题(含答案)
- 2025年出版专业技术人员职业资格考试真题及答案解析
- T/CSEA 47-2025无硫磷轧制油
- 2026年招标采购从业人员《招标采购专业理论与法律基础(初级)》考试真题(含解析)
- 2026统编版九年级历史上册知识点梳理+课后练习答案
- 【答案】《人工智能与创新》(南开大学)章节期末中国大学慕课答案
评论
0/150
提交评论