资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
一、定点数一位乘法一、定点数一位乘法 两个原码数相乘,其乘积的符号为相乘两个原码数相乘,其乘积的符号为相乘两数的异或值,数值则为两数绝对值之积。两数的异或值,数值则为两数绝对值之积。(1) (1) 原码一位乘原码一位乘3.3 3.3 二进制乘法运算二进制乘法运算2021/6/41解:解: 0 . 1 1 1 0 0 . 1 1 1 0 0 . 1 1 0 1 0 . 1 1 0 1 1 1 1 01 1 1 0 0 0 0 00 0 0 0 1 1 1 01 1 1 0 1 1 1 01 1 1 0 0 . 1 0 1 1 0 1 1 00 . 1 0 1 1 0 1 1 0 例:例: X X0.11100.1110,Y Y0.11010.1101,计算,计算XY(XY(人工算法人工算法) )。 机器内多个数据一般不能机器内多个数据一般不能 同时相加,一次加法操作同时相加,一次加法操作 只能求出两数之和。只能求出两数之和。问题:问题: 需用需用n个寄存器存放个寄存器存放n个个 部分积。部分积。 最后结果是最后结果是2n位的数,需位的数,需 用用2n位的加法器。位的加法器。结论:结论: 不经济,上述算法需要改进。不经济,上述算法需要改进。部分积部分积2021/6/42 把每次运算得到的部分积逐次累加。每次仅有把每次运算得到的部分积逐次累加。每次仅有2个个 部分积相加,部分积相加, 所需的寄存器数减少。所需的寄存器数减少。 改进:改进: 部分积右移时,乘数寄存器同时右移一位,则始终部分积右移时,乘数寄存器同时右移一位,则始终 用乘数寄存器的最低位来控制相加数用乘数寄存器的最低位来控制相加数(取被乘数或零取被乘数或零), 同时乘数寄存器的最高位可以接收部分积右移出来的同时乘数寄存器的最高位可以接收部分积右移出来的 一位。因此,完成乘法运算后,一位。因此,完成乘法运算后,A寄存器保存乘积的寄存器保存乘积的 高位部分,乘数寄存器保存乘积的低位部分。高位部分,乘数寄存器保存乘积的低位部分。 在求本次部分积时,前一部分积的最低位不再参与在求本次部分积时,前一部分积的最低位不再参与 运算,因此可将其右移一位,相加数可直送而不必运算,因此可将其右移一位,相加数可直送而不必 偏移,则用偏移,则用n位加法器就可实现两个位加法器就可实现两个n位数相乘。位数相乘。2021/6/43例:例: X X0.11100.1110,Y Y0.11010.1101,计算,计算XYXY。解:解:B B|X|X|原原0.11100.1110, |Y| |Y|原原0.1101 0.1101 部分积部分积A A 乘数乘数C C 00.0000 .110 00.0000 .1101 1 B B 00.111000.1110 00.1110 00.1110 右移右移1 1位位 00.011100.0111 0 0.11.110 0 右移右移1 1位位 00.001100.0011 1010.1.11 1 B B 00.111000.1110 01.000101.0001 右移右移1 1位位 00.100000.1000 110110. .1 1 B B 00.111000.1110 01.011001.0110 右移右移1 1位位 00.101100.1011 01100110. . 积的符号位积的符号位0 10 11 1 X XY Y0.101101100.10110110 A采用双符号位,采用双符号位, 累加时可能产生的累加时可能产生的 进位暂存于第二符进位暂存于第二符 号位,第一符号位号位,第一符号位 始终指示部分积累始终指示部分积累 加和的正负。加和的正负。注意:注意: 最后一步要移位,最后一步要移位, 共移位共移位n次(乘数次(乘数 的尾数为的尾数为n位)。位)。 移位时连同符号位移位时连同符号位 一起右移,空位补一起右移,空位补 第一符号位。第一符号位。2021/6/44练习:练习: X X0.11010.1101,Y Y0.10110.1011,计算,计算XYXY。解:解:B B|X|X|原原0.11010.1101, |Y| |Y|原原0.1011 0.1011 部分积部分积A A 乘数乘数C C 00.0000 .101 00.0000 .1011 1 B B 00.110100.1101 00.1101 00.1101 右移右移1 1位位 00.011000.0110 1 1.10.101 1 B B 00.110100.1101 01.0011 01.0011 右移右移1 1位位 00.100100.1001 1111.1.10 0 右移右移1 1位位 00.010000.0100 111111. .1 1 B B 00.110100.1101 01.000101.0001 右移右移1 1位位 00.100000.1000 11111111. . 积的符号位积的符号位0 10 11 1 X XY Y0.100011110.100011112021/6/45 有的机器为方便加减法运算,数据以补码有的机器为方便加减法运算,数据以补码形式存放。如采用原码乘法,则在相乘之前,形式存放。如采用原码乘法,则在相乘之前,要将负数还原成原码形式,相乘之后,如乘积要将负数还原成原码形式,相乘之后,如乘积为负数,又要将其转换成补码形式,这增加了为负数,又要将其转换成补码形式,这增加了操作步骤。操作步骤。 为此,有不少计算机直接采用补码相乘。为此,有不少计算机直接采用补码相乘。(2) (2) 补码一位乘补码一位乘2021/6/46 校正法校正法 设:被乘数设:被乘数X补补=X0.X1X2Xn, 乘数乘数Y补补=Y0.Y1Y2Yn, 则:则:XY补补=X补补(-Y0+ Yi 2-i) 若先按原码那样直接乘;若先按原码那样直接乘; 若乘数若乘数Y为正,则结果不需校正;为正,则结果不需校正; 若乘数若乘数Y为负,则结果加一个校正量(为负,则结果加一个校正量( X补补)。)。2021/6/47 比较法比较法 XY补补=X补补(-Y0+ Yi 2-i) = =X补补 (Yi+1-Yi)2-i (布斯公式)(布斯公式) 操作数与结果均以补码表示,连同符号位一起运算;操作数与结果均以补码表示,连同符号位一起运算; 乘数的最低乘数的最低1位为位为Yn,在其后再添加,在其后再添加1位位Yn+1,值为,值为0。2021/6/48 变换布斯公式:按机器执行顺序求出每一步的部分积。变换布斯公式:按机器执行顺序求出每一步的部分积。P P0 0补补=0=0P P1 1补补= =P P0 0补补+(Y+(Yn+1n+1-Y-Yn n) )X X补补2 2-1-1 (Y(Yn+1n+1=0)=0)P P2 2补补= =P P1 1补补+(Y+(Yn n-Y-Yn-1n-1) )X X补补2 2-1-1 P Pi i补补= =P Pi-1i-1补补+(Y+(Yn-i+2n-i+2-Y-Yn-i+1n-i+1) )X X补补2 2-1-1 P Pn n补补= =P Pn-1n-1补补+(Y+(Y2 2-Y-Y1 1) )X X补补2 2-1-1P Pn+1n+1补补= =P Pn n补补+(Y+(Y1 1-Y-Y0 0) )X X补补= =XYXY补补 总结:总结:在上一步的部分积上,加在上一步的部分积上,加(Yi+1-Yi)X补补(i=n,1,0), 再右移再右移1位,得到新部分积。位,得到新部分积。2021/6/49 Yi+1与与Yi为相邻两位,为相邻两位,(Yi+1-Yi)有三种取值,有三种取值, 其运算规则如下:其运算规则如下: Yi+1-Yi=0(Yi+1Yi=00或或11),部分积加,部分积加0,右移,右移1位;位; Yi+1-Yi=1(Yi+1Yi=10),部分积,部分积 X 补补,右移,右移1位;位; Yi+1-Yi=-1(Yi+1Yi=01),部分积,部分积 - X补补,右移,右移1位;位; 最后一步最后一步(i=n+1)不移位。不移位。 2021/6/410例:例: X X0.11010.1101,Y Y0.10110.1011,计算,计算XYXY补补。解:解:B=XB=X补补=11.0011=11.0011,B=00.1101B=00.1101,C=YC=Y补补=1.0101=1.0101 步数步数 条件条件 操作操作 部分积部分积A A 乘数乘数C C 00.0000 1.010 00.0000 1.0101010 1010 B B 00.110100.1101 00.1101 00.1101 右移右移1 1位位 00.011000.0110 1 11.011.010101 0101 B 11.0011B 11.0011 11.100111.1001 右移右移1 1位位 11.110011.1100 11111.01.01010 10 10 B B 00.110100.1101 1 100.100100.1001 右移右移1 1位位 00.010000.0100 111 111 1.1.0101 01 01 B B 11.001111.0011 11.011111.0111 右移右移1 1位位 11.101111.1011 1111 1111 1.01.0 10 10 B B 00.110100.1101 1 100.100000.1000 X XYY补补0.100011110.10001111 移位时空位补移位时空位补 第一符号位。第一符号位。注意:注意: 最后一步不移位,最后一步不移位, 共做共做n1步,共步,共 移位移位n次。次。2021/6/411练习:练习: X X0.10100.1010,Y Y0.01100.0110,计算,计算XYXY。解:解:B=XB=X补补=00.1010=00.1010,B=11.0110B=11.0110,C=YC=Y补补=1.1010=1.1010 步数步数 条件条件 操作操作 部分积部分积A A 乘数乘数C C 00.0000 1.101 00.0000 1.1010000 0000 右移右移1 1位位 00.000000.0000 0 01.101.101010 1010 B 11.0110B 11.0110 11.011011.0110 右移右移1 1位位 11.101111.1011 00001.11.10101 01 01 B B 00.101000.1010 1 100.010100.0101 右移右移1 1位位 00.001000.0010 100 100 1.1.1010 10 10 B B 11.011011.0110 11.100011.1000 右移右移1 1位位 11.110011.1100 0100 0100 1.11.1 X XYY补补11.1100010011.11000100 11 右移右移1 1位位 11.111011.1110 00100 00100 1.1. X XY Y0.001111000.001111002021/6/412 两位乘两位乘根据乘数每两位的取值情况,决定根据乘数每两位的取值情况,决定 做什么操作,从而一次求出对应于该两位的做什么操作,从而一次求出对应于该两位的 部分积。此时,只要增加少量逻辑电路,就部分积。此时,只要增加少量逻辑电路,就 可使乘法速度提高一倍。可使乘法速度提高一倍。 二、定点数两位乘法二、定点数两位乘法2021/6/413 乘数和被乘数都用原码表示,符号位单独处理。乘数和被乘数都用原码表示,符号位单独处理。(1)(1)原码两位乘原码两位乘 两位乘数有四种可能组合,对应以下操作两位乘数有四种可能组合,对应以下操作: YiYi1=00相当于相当于0X。部分积。部分积Pi右移右移2位;位; YiYi1=01相当于相当于1X。部分积。部分积PiX,右移,右移2位;位; YiYi1=10相当于相当于2X。部分积。部分积Pi 2X,右移,右移2位;位; YiYi1=11相当于相当于3X。部分积。部分积Pi 3X,右移右移2位。位。2021/6/414 2X把把X左移左移1位即得位即得2X,在机器内通常采用向左,在机器内通常采用向左 斜送斜送1位来实现。位来实现。 实现:实现: 3X不能一次完成,分两次又会降低计算速度。不能一次完成,分两次又会降低计算速度。 3X用用(4X-X)来运算,在本次运算中只执行来运算,在本次运算中只执行-X,用,用 一个欠账触发器一个欠账触发器CJ记下欠账,下一步再补记下欠账,下一步再补+4X。 每一步累加后部分积要右移两位,移位前欠下的每一步累加后部分积要右移两位,移位前欠下的+4X 已变成已变成+X,下一步只需下一步只需+X即可还账。即可还账。2021/6/415例:例:X X0.1111110.111111,Y Y0.1110010.111001,计算,计算XYXY原原。解:解:B=|X|=000.111111B=|X|=000.111111,B=111.000001B=111.000001, 2B=001.111110 C=|Y|=00.1110012B=001.111110 C=|Y|=00.111001 步数步数 C Cn-1n-1C Cn nC CJ J 操作操作 部分积部分积A A 乘数乘数C CC CJ J欠账触发器欠账触发器 000.000000 00.1110 000.000000 00.11100101 0 0 010010 B B 000.111111000.111111 000.111111 000.111111 右移右移2 2位位 000.001111000.001111 111100.1100.111010 0 0 100100 2B 001.1111102B 001.111110 010.001101010.001101 右移右移2 2位位 000.100011000.100011 0111011100.00.1111 0 0 110 110 B B 111.000001111.000001 111.100100111.100100 右移右移2 2位位 111.111001111.111001 00011100011100.00. 1 1 001 001 B 000.111111B 000.111111 1 1000.111000000.111000 X XYY原原1.1110000001111.111000000111 积的符号位积的符号位1 01 01 12021/6/416 A、B采用三符号位。采用三符号位。 2B本身可能进位到第三符号位,部分积本身可能进位到第三符号位,部分积2B操作后可能进位操作后可能进位 到第二符号位,而第一符号位始终指示部分积的正负。到第二符号位,而第一符号位始终指示部分积的正负。 注意:注意: 共移位共移位n/2次(乘数的尾数为次(乘数的尾数为n位)。位)。 应使乘数的尾数为偶数位,若不是,在末尾补应使乘数的尾数为偶数位,若不是,在末尾补0凑足。凑足。 CJ不是由移位得到。不是由移位得到。 乘数乘数C用双符号位,在最后一步还清欠账时充当判断用双符号位,在最后一步还清欠账时充当判断 位中的乘数。位中的乘数。2021/6/417练习:练习:X X0.10110.1011,Y Y0.11010.1101,用原码两位乘计算,用原码两位乘计算XYXY。解:解:B=|X|=000.1011B=|X|=000.1011,B=111.0101B=111.0101, 2B=001.0110 C=|Y|=00.11012B=001.0110 C=|Y|=00.1101 步数步数 C Cn-1n-1C Cn nC CJ J 操作操作 部分积部分积A A 乘数乘数C CC CJ J 000.0000 00.11 000.0000 00.110101 0 0 010010 B B 000.1011000.1011 000.1011 000.1011 右移右移2 2位位 000.0010000.0010 111100.00.1111 0 0 110110 B 111.0101B 111.0101 111.0111111.0111 右移右移2 2位位 111.1101111.1101 1111111100.00. 1 1 001 001 B B 000.1011000.1011 1 1000.1000000.1000 X XY Y0.100011110.10001111 积的符号位积的符号位0 00 00 02021/6/418 乘数和被乘数都用补码表示,积的符号在运算时产生。乘数和被乘数都用补码表示,积的符号在运算时产生。(2)(2)补码两位乘补码两位乘 设上一步的部分积为设上一步的部分积为PPi i 补补,则本步的部分积应为:,则本步的部分积应为: Pi+1 补补= Pi 补补 ( Yn-i+1Yn-i ) X 补补2-1 下一步的部分积应为:下一步的部分积应为: Pi+2 补补= Pi+1 补补 ( Yn-iYn-i-1 ) X 补补2-1 综合上述两步可得:综合上述两步可得: Pi+2 补补= Pi 补补 ( Yn-i+1Yn-i2Yn-i-1 ) X 补补2-2 根据前述的布斯算法,将两步合并成一步,即可推导根据前述的布斯算法,将两步合并成一步,即可推导 出补码两位乘的公式。出补码两位乘的公式。2021/6/419 三位乘数有三位乘数有8 8种可能组合,对应以下操作:种可能组合,对应以下操作:Yn-i-1Yn-iYn-i+1组合值组合值Pi+2补补0000Pi补补+02-20011Pi补补+X补补2-20101Pi补补+X补补2-20112Pi补补+2X补补2-2100-2Pi补补+2-X补补2-2101-1Pi补补+-X补补2-2110-1Pi补补+-X补补2-21110Pi补补+02-22021/6/420 在进行第一步操作时,在进行第一步操作时,Yn+1为附加位。为附加位。 当乘数尾数的位数为奇数时,乘数用当乘数尾数的位数为奇数时,乘数用1 1位符号位,位符号位, 最后一步只移最后一步只移1 1位。位。 乘数用乘数用1 1位符号位,在尾数末尾、附加位之前再加位符号位,在尾数末尾、附加位之前再加 一个一个0 0,最后一步只移,最后一步只移1 1位。共移位位。共移位(n+1)/2(n+1)/2次。次。 当乘数尾数的位数为偶数时,有两种处理方法:当乘数尾数的位数为偶数时,有两种处理方法: 乘数用乘数用2 2位符号位,最后一步不移位。共移位位符号位,最后一步不移位。共移位n/2n/2次。次。2021/6/421例:例:X X0.11100.1110,Y Y0.11010.1101,用补码两位乘计算,用补码两位乘计算XYXY。解:解:XX补补=000.1110=000.1110, -X -X补补=111.0010=111.0010, 2X 2X补补=001.1100=001.1100,2-X2-X补补=110.0100=110.0100, Y Y补补=11.0011=11.0011 步数步数 Y Yn-1n-1Y Yn nY Yn+1n+1 操作操作 部分积部分积A A 乘数乘数Y Y 附加位附加位Y Yn n1 1 000.0000 11.00 000.0000 11.001111 0 0 110110 -X-X补补 111.0010111.0010 111.0010 111.0010 右移右移2 2位位 111.1100111.1100 101011.11.0000 1 1 001001 XX补补 000.1110000.1110 1 1000.1010000.1010 右移右移2 2位位 000.0010 000.0010 1010101011.11. 0 0 110 110 -X-X补补 111.0010111.0010 111.0100111.0100 X XY Y0.101101100.10110110 XXYY补补1.010010101.01001010 注意:注意:区分附加位和欠账触发器。区分附加位和欠账触发器。2021/6/422练习:练习:X X补补0.100110.10011,Y Y补补1.011011.01101,补码两位乘计算,补码两位乘计算XYXY补补。解:解:-X-X补补=111.01101=111.01101, Y Y补补=1.01101=1.01101 步数步数 Y Yn-1n-1Y Yn nY Yn+1n+1 操作操作 部分积部分积A A 乘数乘数Y Y 附加位附加位Y Yn n1 1 000.00000 1.011 000.00000 1.0110101 0 0 010010 XX补补 000.10011000.10011 000.10011 000.10011 右移右移2 2位位 000.00100000.00100 11111.01.01111 0 0 110110 -X-X补补 111.01101111.01101 111.10001111.10001 右移右移2 2位位 111.11100 111.11100 011101111.01.0 1 1 101 101 -X-X补补 111.01101111.01101 1 1111.01001111.01001 右移右移1 1位位 111.10100 111.10100 10111101111.1. 0 0 XXYY补补1.10100101111.10100101112021/6/423部分资料从网络收集整理而来,供大家参考,感谢您的关注!
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号