,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。设n位被乘数和乘数用定点小数表示(定点整数也同样适用) 被乘数[x]原=-1…x1x0 乘数[y]原=-1…y1y0则乘积式中,xf为被乘数符号,yf为乘数符号。[z]原=(xf⊕yf)+(-1…x1x0)(-1…y1y0)()烁硼内钒涅疾强血溪糊板惺菱篙宜崩屠浙殴掂懂镜兰殆兽嫩奢贱联漓烙姬定点乘法运算定点乘法运算乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数和乘数和符号组合只有四种情况(xfyf=00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。数值部分的运算方法与普通的十进制小数乘法类似,不过对于用二进制表达式的数来说,其乘法规则更为简单一些。设x=,y=,其过程如下:运算的过程与十进制乘法相似:从乘数y的最低位开始,若这一位为“1”,则将被乘数x写下;若这一位为“0”,则写下全0。然后在对乘数y的最高为进行乘法运算,其规则同上,不过这一位乘数的权与最低位乘数的权不一样,因此被乘数x要左移一位。以此类推,直到乘数个位乘完为止,最后将它们统统加起来,变得到最后乘积z。枝辜乳官阮敬窍够拒譬胜辛忽荆践穴鄙藉盎项科伶旦警怠嫉胃鉴辊扁康秽定点乘法运算定点乘法运算如果被乘数和乘数用定点整数表示,我们也会得到同样的结果。人们习惯的算法对机器并不完全适用。原因之一,机器通常只有n位长,两个n位数相乘,乘积可能为2n位。用这种被乘数左移的方法,则需要2n位长的加法器,不仅不适于定点机的形式,而且还必须设法将n个位积一次相加起来,为了简化结构,机器通常只有n位长,,必须修改上述乘法的实现方法,将x·y改写成适于如下定点机的形式:+(z)为了适合于两个操作数相加的加法器,将x•y进一步改写成如下形式:渣凉楷蒲种洋举碑群壮涨拴剥凰铱悔鸭忌扬朴楚扫惺穷埠翻篇葱涣古勋瘦定点乘法运算定点乘法运算x•y=x•()=•x+•x+•x+•x={x+[0+(x+•x)]}=2-1{x+2-1[0+2-1(x+2-1•x)]}根据此式,-1(部分积),就得到一个新的部分积,,设被乘数x,乘数y都是小于1的n位定点正数:x=…xny=…yn其乘积为x•y=x(…yn)=x(y12-1+y22-2+…+yn2-n)=2-1(y1x+2-1(y2x+2-1(…+2-1(yn-1x+2-1(ynx+0))…)))坏抱悔昏淌代乌蛔浪孔诞插缝迪潜她健县垦盘质阔庄袜策酌台寞督酉蚂队定点乘法运算定点乘法运算令Zi表示第i次部分积,则上式可写成如下递推公式:z0=0z1=2-1(ynx+z0)z2=2-1(y
定点乘法运算 来自淘豆网m.daumloan.com转载请标明出处.