文档介绍:
3.3二进制乘法运算3.3.1定点数一位乘法1.定点原码一位乘法假设:[X]原=X0X1X2…Xn[Y]原=Y0Y1Y2…Yn[X·Y]原=[X]原·[Y]原=(X0⊕Y0)|(X0X1X2…Xn)·(Y0Y1Y2…Yn)计算机中如何实现呢?先以手工计算为例。例3.31X=0.1101,Y=0.1011计算X·Y例:x原=0.1101,y原=0.1011P=|x||y|(符号位单独处理)上符号位:0.10001111手算0.1101×0.101111011101000011010.10001111部分积问题:1)加数增多(由乘数位数决定)。2)加数的位数增多(与被乘数、乘数位数有关)。改进:1.将一次相加改为分步累加。每求得一个相加数,就与上次部分积相加。2.将相加数左移改为部分积右移。3.部分积右移时,乘数寄存器同时右移,用乘数寄存器的最低位控制相加数,同时最高位接收部分积右移出来的一位。例3.31X=0.1101,Y=0.1011计算X·Y步数条件操作部分积乘数00.0000.=1+X+00.110100.110100.01101.=1+X+00.110101.001100.100111.=0+0+00.000000.100100.0100111.=1+X+00.110101.000100.10001111[X]原×[Y]原=0.10001111右移右移右移机器实现:每次将一位乘数所对应的部分积与原部分积的累加和相加,并移位。设置寄存器:A:存放部分积累加和、乘积高位B:存放被乘数C:存放乘数、乘积低位设置初值:A=00.0000B=X=00.1101C=Y=00.1011从流程图可看到,原码一位乘是通过循环迭代的办法实现的。每次迭代得到的部分积(P0,P1,…Pn)可用以下式子表示:P0=0P1=(P0+XYn)2-1P2=(P1+XYn-1)2-1...Pi+1=(Pi+XYn-i)2-1...Pn=(Pn-1+XY1)2-1Pn为乘积2.定点补码一位乘法(1)补码与真值的转换关系设[X]补=X0.X1X2……Xn当真值X≥0时,X0=0,[X]补=0.X1X2……Xn=∑Xi·2-i=XX=[X]补-2=1.X1X2……Xn–2=-1+0.X1X2……Xn=-1+∑Xi·2-ini=1当真值X<0时,X0=1,[X]补=1.X1X2……Xn=2+Xni=1X=-X0+∑Xi·2-i=-X0+0.X1X2……Xnni=1
内容来自淘豆网www.taodocs.com转载请标明出处.