资源描述:
《dj10第3章-算术逻辑运算基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.3.3定点乘法运算2、补码一位乘法(1)算法分析X补=X0.X1X2……Xn①Y为正:Y补=0.Y1Y2……Yn(XY)补=X补(0.Y1Y2……Yn)②Y为负:Y补=1.Y1Y2……Yn(XY)补=X补(0.Y1Y2……Yn)+(–X)补证明(2):对于定点小数,[Y]补=2+Y=1.Y1Y2....Yn则Y=[Y]补–2=(1+0.Y1Y2....Yn)–2=0.Y1Y2....Yn–1所以:X·Y=X·(0.Y1Y2....Yn–1)=X·(0.Y1Y2....Yn)–X则:[X·Y]补=[X·(0.Y1Y2....Yn)
2、–X]补=[X·(0.Y1Y2....Yn)]补+[–X]补=[X]补·[(0.Y1Y2....Yn)]补+[–X]补因为:0.Y1Y2....Yn>0所以:[X·Y]补=[X]补·(0.Y1Y2....Yn)+[–X]补将①和②结合起来,有如下的③式:③Y符号任意:(XY)补=X补(0.Y1Y2…..Yn)+(–X)补Y0符号位④展开为部分积的累加和形式:=X补(0.Y1Y2.…Yn)–X补Y0=X补(–Y0+2–1Y1+2–2Y2+.…2–nYn)=X补(Y1–Y0)+2–1(Y2–Y1)+2–2(Y3–Y2)+…+2–n(0
3、–Yn)](XY)补=X补(0.Y1Y2.…Yn)+(–X)补Y0=X补–Y0+(Y1–2–1Y1+2–1Y2–2–2Y2)++…+(2–(n–1)Yn–2–nYn)+0](XY)补=X补(Y1–Y0)+2–1(Y2–Y1)+2–2(Y3–Y2)+.…+2–n(Yn+1–Yn)]在机器实现中可在末位Yn之后再增设一个附加位Yn+1,其初始值为0,对乘数Y的值并无影响。若定义[A0]补为初始部分积,[A1]补......[An]补依次为各步求得的累加和并且右移后的部分积,则可将上式改写为如下递推形式,它更接近于乘法的分步运算形式。
4、[A0]补=0[A1]补=2-1{[A0]补+(Yn+1-Yn)[X]补}[A2]补=2-1{[A1]补+(Yn–Yn-1)[X]补}..............[An]补=2-1{[An-1]补+(Y2–Y1)[X]补}[XY]补=[An]补+(Y1–Y0)[X]补上式表明补码一位乘的基本操作:被乘数X补乘以对应的相邻两位乘数之差值,再与原部分积累加,然后右移一位,形成该步的部分积累加和。比较法:用乘数的相邻两位比较(低位减高位)的结果决定部分积:当Yi+1–Yi=1+X补当Yi+1–Yi=–1–X补当Yi+1–Yi=0+0(2)
5、比较法算法(3)运算实例X=–0.1101,Y=–0.1011,求(XY)补。初值:A=00.0000,B=X补=11.0011,–B=(–X)补=00.1101,C=Y补=1.0101000110111/2A补加0右移1/2(A补+X补)加X补右移1/2(A补–X补)减X补右移1/2A补加0右移Yn(高位)Yn+1(低位)操作(A补为部分积累加和)(0)(1)(–1)(0)步数条件操作ACCnCn+100.00001)10–B+00.110100.110100.011011.01012)01+B+11.001111.100111.
6、1100111.0103)10–B+00.110100.100100.01001111.014)01+B+11.0011CnCn+11.01010(XY)补=0.100011114)01+B+11.001111.011111.101111111.05)10–B+00.110100.10001111修正不再移位(4)运算规则①A、B取双符号位,符号参加运算;②C取单符号位,符号参加移位,以决定最后是否修正;③C末位设置附加位Cn+1,初值为0,CnCn+1组成判断位,决定运算操作;④作n步循环,若需作第n+1步,则不移位,仅修正。因为
7、算法:(XY)补=X补(Y1–Y0)+2–1(Y2–Y1).…=[An]补+(Y1–Y0)[X]补即,第n+1次是(Y1与Y0)的比较,该项没有权值,不需要移位。当Y1=Y0时,无需与X补相乘。因此,在第n步完成后,如果Y1=Y0,不需要作第n+1步。当Y1Y0,作+B或–B,即修正,但不移位。即有:1.0:–B修正0.1:+B修正0.0:不修正1.1:不修正乘法运算学习思路三个步骤(1)从运算的定义和性质推导出由计算机实现的算法;(2)由实例演示和验证该算法;(3)归纳总结计算机实现该算法的规则;3.3.4定点除法运算除法的步
8、骤:余数与除数加减、移位。例.0.10110÷0.111110.1011011010111110.11111001111110101011111101100.101100.00000商:0.10110余数:0.101102–5实现除