题目
用原码[1]一位乘、两位乘和补码一位乘(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.11011,y=-0.11101。
用原码[1]一位乘、两位乘和补码一位乘(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.11011,y=-0.11101。
题目解答
答案
解:先将数据转换[2]成所需的机器数,然后计算,最后结果转换成真值。(1)[x]原=0.110111,[y]原=1.101110,x*=0.110111,y*=0.101110原码一位乘:部分积乘数y*说明0.000000+0.000000101110部分积初值为0,乘数为0加00.0000000.000000+0.110111010111右移一位乘数为1,加上x*0.1101110.011011+0.110111101011右移一位乘数为1,加上x*1.0100100.101001+0.110111010101右移一位乘数为1,加上x*1.1000000.110000+0.000000001010右移一位乘数为0,加上00.1100000.011000+0.110111000101右移一位乘数为1,加上x*1.0011110.100111100010右移一位即x*×y*=0.100111100010,z0=x0y0=01=1,[x×y]原=1.100111100010,x·y=-0.100111100010原码两位乘:[-x*]补=1.001001,2x*=1.101110部分积乘数y*Cj说明000.000000+001.10111000101110部分积初值为0,Cj=0根据yn-1ynCj=100,加2x*,保持Cj=0001.101110000.011011+111.0010011000101110001011右移2位根据yn-1ynCj=110,加[-x*]补,置Cj=1111.100100111.111001+111.001001001000101右移2位根据yn-1ynCj=101,加[-x*]补,置Cj=1111.000010111.110000+000.110111100010001右移2位根据yn-1ynCj=001,加x*,保持Cj=0000.100111100010即x*×y*=0.100111100010,z0=x0y0=01=1,[x×y]原=1.100111100010,x·y=-0.100111100010补码一位乘:[x]补=0.110111,[-x]补=1.001001,[y]补=1.010010部分积乘数Yn+1说明00.00000000.000000+11.00100110100100101001Ynyn+1=00,部分积右移1位Ynyn+1=10,部分积加[-x]补11.001001右移1位11.100100+00.11011110101001Ynyn+1=01,部分积加[x]补00.011011右移1位00.00110100.000110+11.00100111010101110101Ynyn+1=00,部分积右移1位Ynyn+1=10,部分积加[-x]补11.001111右移1位11.100111+00.11011111110101Ynyn+1=01,部分积加[x]补00.01111000.001111+11.0010010111101右移1位Ynyn+1=10,部分积加[-x]补11.011000011110即[x×y]补=1.011000011110,x·y=-0.100111100010补码两位乘: