.,20.用原码一位乘、两位乘和补码一位乘(Booth算法)、两位乘计算xy。(1)x=0.110111,y=-0.101110;(2)x=-0.010111,y=-0.010101;(3)x=19,y=35;(4)x=0.11011,y=-0.11101。解:先将数据转换成所需的机器数,然后计算,最后结果转换成真值。(1)[x]原=x=0.110111,[y]原=1.101110 x*=0.110111,y*=0.101110 x0=0,y0=1,z0=x0y0=01=1x*y*=0.100111100010[xy]原=1.100111100010 xy=-0.100111100010,.,原码一位乘:部分积乘数y*0.000000.101110——+010.0000000.10111——+x*+0.1101110.11011110.01101110.1011——+x*+0.1101111.01001010.101001010.101——+x*+0.1101111.10000010.1100000010.10——+010.01100000010.1——x*+0.1101111.00111110.100111100010,,,,,,,,,,,,,,,,,,.,2x*=01.101110,[-x*]补=[-x]补=1.001001原码两位乘:部分积乘数Cj000.00000000.1011100+001.101110+2x*001.10111002000.0110111000.1011+111.001001+[-x*]补111.10010012111.111001001000.10+111.001001+[-x*]补111.00001012111.11000010001000.+000.110111+x*000.1001111000100结果同一位乘,xy=-0.100111100010,,,,,,,,,,,,.,[x]补=x=0.110111[y]补=1.010010[-x]补=1.001001[2x]补=01.101110[-2x]补=10.010010[xy]补=1.0110000111100 xy=-0.1001111000100补码一位乘、两位乘运算过程如下:,.,补码一位乘:部分积乘数[y]补yn+100.0000001.0100100——+0100.00000001.010010+11.001001+[-x]补11.001001111.100100101.01001+00.110111+[x]补00.011011100.0011011101.0100——+0100.00011011101.010+11.001001+[-x]补11.001111111.100111111101.01+00.110111+[x]补00.011110100.0011110111101.0+11.001001+[-x]补11.0110000111100——清0,,,,,,,,,,,,,,,,,,,.,补码两位乘:部分积乘数yn+1000.00000011.0100100+110.010010+[-2x]补110.0100102111.1001001011.01001+000.110111+[x]补000.0110112000.000110111011.010+000.110111+[x]补000.1111012000.00111101111011.0+111.001001+[-x]补111.01100001111000.结果同补码一位乘,xy=-0.10011110001000,,,,,,,,,,,,.,(2)x=-0.010111,y=-0.010101[x]原=1.010111,[y]原=1.010101x*=0.010111,y*=0.010101[-x*]补=1.101001,2x*=0.101110[-2x*]补=1.010010 x0=1,y0=1,z0=x0y0=11=0[x]补=1.101001,[y]补=1.101011[-x]补=0.010111,[2x]补=1.010010[-2x]补=0.101110 x*y*=0.000111100011[xy]原=0.000111100011[xy]补=0.0001111000110 xy=0.000111100011运算过程如下:,.,原码一位乘:部分积乘数y*0.000000.010101——+x*+0.0101110.01011110.0010111.01010——+010.00010111.0101——+x*+0.0101110.01110010.001110011.010——+010.0001110011.01——+x*+0.0101110.01111010.00111100011.0——+010.000111100011,,,,,,,,,,,,,,,,,.,原码两位乘:部分积乘数y*Cj000.00000000.0101010+000.010111+x*000.01011102000.0001011100.0101+000.010111+x*000.01110002000.000111001100.01+000.010111+x*000.01111002000.00011110001100.+0结果同一位乘,xy=0.000111100011,,,,,,,,,,,.,补码一位乘:部分积乘数[y]补yn+100.0000001.1010110+00.010111+[-x]补00.010111100.00101111.101011——+0100.000101111.10101+11.101001+[x]补11.101110111.1101110111.1010+00.010111+[-x]补00.001110100.00011100111.101+11.101001+[x]补11.110000111.111000000111.10+00.010111+[-x]补00.001111100.0001111000111.1——+0,,,,,,,,,,,,,,,,,,,.,补码两位乘:部分积乘数yn+1000.00000011.1010110+000.010111+[-x]补000.0101112000.0001011111.10101+000.010111+[-x]补000.0111002000.000111001111.101+000.010111+[-x]补000.0111102000.00011110001111.1清0+0结果同补码一位乘,xy=0.00011110001100,,,,,,,,,,,.,(3)x=19,y=35x=(10011)2,y=(100011)2x*=[x]原=[x]补=0,010011y*=[y]原=[y]补=0,100011[-x*]补=[-x]补=1,1011012x*=[2x]补=0,100110[-2x*]补=[-2x]补=1,011010 x0=0,y0=0,z0=x0y0=00=0 xy=x*y*=[xy]原=[xy]补=0,001010011001运算过程如下:,.,原码一位乘:部分积乘数y*0,000000100011——+x*+0,0100110,01001110,001001110001——+x*+0,0100110,01110010,001110011000——+010,000111001100——+010,000011100110——+010,000001110011——+x*+0,0100110,01010010,001010011001,,,,,,,,,,,,,,,,,.,原码两位乘:部分积乘数y*Cj000,00000000,1000110+111,101101+[-x*]补111,10110112111,1110110100,1000+000,010011+x*000,00111002000,000011100100,10+000,100110+2x*000,10100102000,00101001100100,+0结果同一位乘,xy=0,001010011001,,,,,,,,,,,.,补码一位乘:部分积乘数[y]补yn+100,0000000,1000110+11,101101+[-x]补11,101101111,11011010,100011——+0111,111011010,10001+00,010011+[x]补00,001110100,0001110010,1000——+0100,00001110010,100——+0100,000001110010,10+11,101101+[-x]补11,101110111,1101110110010,1+00,010011+[x]补00,0010100110010,,,,,,,,,,,,,,,,,,.,补码两位乘:部分积乘数yn+1000,00000000,1000110+111,101101+[-x]补111,1011012111,1110110100,10001+000,010011+[x]补000,0011102000,000011100100,100+111,011010+[-2x]补111,0111012111,11011101100100,1+000,010011+0000,00101001100100结果同补码一位乘,xy=0.00011110001100,,,,,,,,,,,,.,(4)x=0.11011,y=-0.11101x*=[x]原=[x]补=0.11011[y]原=1.11101,y*=0.11101[y]补=1.00011[-x*]补=[-x]补=1.001012x*=[2x]补=01.10110[-2x*]补=[-2x]补=10.01010 x0=0,y0=1,z0=x0y0=01=1x*y*=0.1100001111[xy]原=1.1100001111[xy]补=1.00111100010 xy=-0.1100001111运算过程如下:,.,原码一位乘:部分积乘数y*0.00000.11101——+x*+0.110110.1101110.011011.1110——+010.0011011.111——+x*+0.110111.0000110.10000111.11——+x*+0.110111.0101110.101011111.1——+x*+0.110111.1000010.1100001111,,,,,,,,,,,,,,,,,.,原码两位乘:部分积乘数y*Cj000.000000.111010+000.11011+x*000.1101102000.00110110.111+111.00101+[-x*]补111.0101112111.110101111.01+001.10110+2x*001.1000001000.11000011110.+0结果同一位乘,xy=-0.1100001111,,,,,,,,,,,.,补码一位乘:部分积乘数[y]补yn+100.000001.000110+11.00101+[-x]补11.00101111.1001011.00011——+0111.11001011.0001+00.11011+[x]补00.10100100.010100011.000——+0100.0010100011.00——+0100.00010100011.0+11.00101+[-x]补11.00111100010——清0,,,,,,,,,,,,,,,.,补码两位乘:部分积乘数yn+1000.000001.000110+111.00101+[-x]补111.001012111.11001011.0001+000.11011+[x]补000.101002000.0010100011.00+110.01010+[-2x]补110.011111111.00111100010.——清0结果同补码一位乘,xy=-0.11000011110,,,,,,,,,,,
展开阅读全文