第六章20.用原码一位乘、两位乘和补码一位乘( Booth算法)、两位乘计算x • y。
(1)x= 0.110111, y= -0.101110;(2)x= -0.010111 , y= -0.010101 ;(3)x= 19 , y= 35 ;(4)x= 0.110 11 , y= -0.111 01。
解:(a)原码一位乘:(1)凶原=0.110111[y]原=1.101110x*=0.110111y*=0.101110符号位:X 0 Y00 1 1数值部分的计算:部分积乘数y*0.000000 + 0.000000 101110 开始部分积为0乘数为0,加上00.0000000.000000 010111 1 部分积右移一位,乘数右移一位+ 0.110111 乘数为1,加上X*0.110111 00.0110111010111 部分积右移一位,乘数右移一位+ 0.110111 乘数为1,加上X* 1.010010 100.1010010101011 部分积右移一位,乘数右移一位+ 0.110111 乘数为1,加上X*1.100000 0100.110000 0010 10+ 0.0000000.110000 00100.011000000101部分积右移一位,乘数右移一位+ 0.110111乘数为1,加上X*1.001111 00010 右移一位0.100111 100010[x*y]原=1.100111100010⑵凶原=1.010111 [y]原=1.010101 x*=0.010111 y*=0.010101 符号位:X 0 Y 0 1 1 0数值部分的计算: 部分积 乘数y* 0.000000 010101开始部分积为0 乘数为1,加上X*+ 0.0101110.0101110.001011 1 01010 1部分积右移一位,乘数右移一位 + 0.000000乘数为0,加上00.00101110.000101 11 0101 1部分积右移一位,乘数右移一位 + 0.010111乘数为1,加上X*0.011100110.001110 011 010部分积右移一位,乘数右移一位 + 0.000000乘数为0,加上00.0011100110.000111 0011 01部分积右移一位,乘数右移一位+ 0.010111乘数为1,加上X*0.01111000110.00111100011 0部分积右移一位,乘数右移一位+ 0.0000000.001111 000110.000111 100011 故,x •y=0.000111100011 (3) [x]原=0, 0001 0011 [y]原=0, 0010 0011 x*=00010011y*=0010 0011 符号位:X 0 Y 0 0 0 000000000 00100011+ 00010011 开始部分积为0 乘数为1,加上X*数值部分的计算:部分积 乘数y*部分积右移一位,乘数右移一位00010011000010011 001000+ 00010011 00011100 100001110 01 001000 部分积右移一位,乘数右移一位+ 0000000000001110 01 00000111 001 00100部分积右移一位,乘数右移一位00000011 1001 001000000001 11001 001+ 0001001100010100 10001 00 000001010011001即 0, 0000 0010 1001 1001 (4) x=0.11011 , y=-0.11101[x] 原=0.11011[y] 原=1.11101 x*=0.11011 y*=0.11101 符号位:X 0 丫0 0 1 1数值部分的计算:部分积 乘数y*0.00000 11101开始部分积为0+ 0 .11011 乘数为1,加上X*0.110110.01101 1 111C )部分积右移一位,乘数右移一位 0.00110 11 111部分积右移一位,乘数右移一位+ 0.110111.00001 110.10000 111 111部分积右移一位,乘数右移一位+ 0.11011乘数为1,加上X*1.01011 1110.10101 1111 1部分积右移一位,乘数右移一位+ 0.11011乘数为1,加上X*1.10000 11110.11000 01111加上符号位得1.1100001111(b)补码一位乘 (Booth)当乘数y 为正数时, 不管被乘数x 符号如何,都可按原码乘法的规则运算, 但加和移位都必须按补码规则运算当乘数y 为负数时,把乘数的补码 [y ]补去掉符号位,当成一个正数与 [x ]补相乘,然后加上[-x ]补进行校正。
Booth 算法的部分积取双符号位,乘数因符号位参加运算,故多取一位。
Booth算法对乘数从低位开始判断,根据两个数据位的情况决定进行加法、减法还是仅仅移位操作。
判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0),移位操作是向右移动。
凶补=0.110111[y]补=1.010010部分积乘数y[n]辅助位 y[n+1]00.000000 1010010 0 初始0,力%1=00,右移一位00.000000 0101001 0 y i y i1=10,加[-X]补,右移一位-00.110111 11.001001 011.100100 10 10100 1 y i y i 1=01,加[X]补,右移一位+ 00.11011100.011011 1000.001101 110 1010 0y i y i 1=00,右移一位00.000110 1110 101 0 y i y i1=10,加[-X]补,右移一位-00.11011111.001111 111011.100111 11110 10 1 y i y i 1=01,加[X]补,右移一位+ 00.11011100.011110 1111000.001111 011110 1 0 y i y i 1=10,加[-X]补,右移一位-00.11011111.011000 011110[x • y]补=1.011000011110则X • Y=1.1001 1110 0010(2) [x]补=1.101001[y]补=1.101011部分积乘数y[n]00.000000 1101011 0 辅助位y[n+1] ** 1=10,加卜刈补,右移一位-11.10100100.01011100.001011 1 110101 1 辅助位y[n+1] yiyi 1=11,右移一位00.000101 11 11010 1 辅助位y[n+1] y i y i 1=01,加[X]补,右移一位+ 11.10100111.101110 11.110111 -11.101001 11011 1101 000.001110 01100.000111 0011 110 1+ 11.10100111.110000 001111.111000 00011 11 0-11.10100100.001111 0001100.000111 100011 1 100.000111 100011故,X • Y=0.000111100011(3) [x]补=00010011=00010011[y]补=0010001 仁00100011部分积乘数y[n] 辅助位y[n+1]00, -00,000000000001001100100011 011,1110110111,11110110 1 0010001 1 11,11111011 01 001000 1 + 00,0001001100,00001110 0100,00000111 001 00100 Q 00,00000011 1001 0010 0 00,00000001 11001 001 0 -00,0001001111, 11101110 1100111,11110111+ 00,00010011011001 00 100,00001010 00,00000101 011001 0011001 0 000,0000 0010 1001 1001即为所求(4) [x]补=0.11011[y]补=1.00011部分积乘数y[n] 辅助位y[n+1]00.00000-00.11011100011 011.0010111.10010 1 10001 111.11001+00.1101101 1000 100. 10100 0100.01010 001 100 000.00101 0001 10 000.00010-00.1101110001 1 011.00111 10001即 1.00 1111 0001X • 丫=1.11 0000 11116.21用原码加减交替法和补码加减交替法计算X/Y.原码加减交替法(1) x=0.100111 , y=0.101011解:[X]原=0.100111,X*=0.100111[丫]原=0.101011,Y*=0.101011,[-Y*]=1.010101 被除数商0.100111+1.0101010.0000001.111100 01.111000 0+0.1010110.100011 011.000110 01+1.0101010.011011 0110.110110+1.0101010110.001011 01110. 010110+1.01010101111.101011 011101.010110 01110+0.1010110.000001 0111010.000010 011101+1.0101011.010111符号位为0111010X 0 Y00 0 0可得,商为0.0101011(2) x= -0.10101,y= 0.111010解:[X]原=1.10101,X*=0.10101[Y]原=0.11011,Y*=0.11011,[-Y*]=1.00101 被除数商0.10101 0.00000+ 1.001011.110101.10100+ 0.110110.01111 010.11110 01+ 1.001010.00011 0110.00110 011+ 1.001011.0101 1 01100.10110 0110 + 0.110111.1000 1 011001.00010 01100+0.110111.11101符号位为011000X。
丫。
1 0 1可得,商为1.11000⑶ x= 0.10100,y= -0.10001解:[X]原=0.10100, X*=0.10100[Y]原=1.10001,Y*=0.10001,[-Y*]=1.01111 被除数商0.10100 0.00000+ 1.011110.00011 10.00110 1+1.011111.10101 101.01010 10+0.100011.11011 1001.10110 100+0.100010.00111 10010.01110 1001+1.011111.11101 100101.11010 10010+0.100010.01011 100101符号位为X。