您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 计算机组成原理第6章_3-2运算方法
三、乘法运算1.分析笔算乘法A=–0.1101B=0.1011A×B=–0.100011110.11010.101111011101000011010.10001111符号位单独处理乘数的某一位决定是否加被乘数4个位积一起相加乘积的位数扩大一倍×乘积的符号心算求得??0.11010.101111011101000011010.10001111×0.11010.101111011101000011010.10001111×0.11010.101111011101000011010.10001111×0.11010.1011110100001101×0.11010.101111011101×0.11010.101111011101×00000.101111011101×0.11012.笔算乘法改进A•B=A•0.1011=0.1A+0.00A+0.001A+0.0001A=0.1A+0.00A+0.001(A+0.1A)=0.1A+0.01[0•A+0.1(A+0.1A)]=0.1{A+0.1[0•A+0.1(A+0.1A)]}=2-1{A+2-1[0•A+2-1(A+2-1(A+0))]}①②⑧第一步被乘数A+0第二步右移一位,得新的部分积第八步右移一位,得结果③第三步部分积+被乘数…右移一位3.改进后的笔算乘法过程0.00000.11010.11010.11010.00000.1101初态,部分积=0乘数为1,加被乘数乘数为1,加被乘数乘数为0,加01.00110.10011.0001111乘数为1,加被乘数0.10001111得结果1011=0.0110形成新的部分积1101=0.1001形成新的部分积1110=0.0100形成新的部分积1111=部分积乘数说明++++0.11010.1011×小结被乘数只与部分积的高位相加由乘数的末位决定被乘数是否与原部分积相加,然后1位形成新的部分积,同时乘数1位(末位移丢),空出高位存放部分积的低位。硬件3个寄存器,具有移位功能1个全加器乘法运算可用加和移位实现n=4,加4次,移4次4.原码乘法(1)原码一位乘运算规则以小数为例设[x]原=x0.x1x2xn…[y]原=y0.y1y2yn…=(x0y0).x*•y*[x•y]原=(x0y0).(0.x1x2xn)•(0.y1y2yn)……式中x*=0.x1x2xn为x的绝对值…y*=0.y1y2yn为y的绝对值…乘积的符号位单独处理x0y0数值部分为绝对值相乘x*•y*(2)原码一位乘递推公式x*•y*=x*(0.y1y2yn)…=x*(y12-1+y22-2++yn2-n)…=2-1(y1x*+2-1(y2x*+2-1(ynx*+0)))……z1znz0=0z1=2-1(ynx*+z0)z2=2-1(yn-1x*+z1)zn=2-1(y1x*+zn-1)……z0例6.21已知x=–0.1110y=0.1101求[x•y]原解:数值部分的运算0.00000.11100.11100.00000.11100.1110部分积初态z0=0部分积乘数说明0.011101.0001101.01101100.101101101,得z4逻辑右移1101=0.01111,得z10110=0.00111,得z21011=0.10001,得z31101=逻辑右移逻辑右移逻辑右移+++++x*+0+x*+x*②数值部分按绝对值相乘①乘积的符号位x0y0=10=1x*•y*=0.10110110则[x•y]原=1.10110110特点绝对值运算逻辑移位例6.21结果用移位的次数判断乘法是否结束(3)原码一位乘的硬件配置A、X、Q均n+1位移位和加受末位乘数控制0An加法器控制门0Xn移位和加控制计数器CS0Qn右移a4a3a2a1a0b4b3b2b1b0a4b1a3b1a2b1a1b1a0b1a4b0a3b0a2b0a1b0a0b0a4b2a3b2a2b2a1b2a0b2a4b3a3b3a2b3a1b3a0b3a4b4a3b3a2b4a1b4a0b4p9p8p7p6p5p4p3p2p1p0×=A=B=P•不带符号的阵列乘法器5.补码乘法设被乘数乘数[x]补=x0.x1x2xn…[y]补=y0.y1y2yn…①被乘数任意,乘数为正同原码乘但加和移位按补码规则运算乘积的符号直接由计算结果形成②被乘数任意,乘数为负乘数[y]补,去掉符号位,操作同①最后加[–x]补,校正(1)补码一位乘运算规则以小数为例③Booth算法(被乘数、乘数符号任意)设[x]补=x0.x1x2xn[y]补=y0.y1y2yn……[x·y]补=[x]补(0.y1yn)–[x]补·y0…=[x]补(y12-1+y22-2++yn2-n)–[x]补·y0…=[x]补(–y0+y12-1+y22-2++yn2-n)…=[x]补[–y0+(y1–y12-1)+(y22-1–y22-2)++(yn2-(n-1)–yn2-n)]…=[x]补[(y1–y0)+(y2–y1)2-1++(yn–yn-1)2-(n-1)+(0–yn)2-n)]…y12-1++…yn2-n–[x]补=+[–x]补2-1=20–2-12-2=2-1–2-22-12-2=[x]补[(y1–y0)+(y2–y1)2-1++(yn+1–yn)2-n]…附加位yn+1④Booth算法递推公式[z0]补=0[z1]补=2-1{(yn+1–yn)[x]补+[z0]补}yn+1=0[zn]补=2-1{(y2–y1)[x]补+[zn-1]补}…[x·y]补=[zn]补+(y1–y0)[x]补最后一步不移位如何实现yi+1–yi?000110111+[x]补1+[–x]补1101-10yiyi+1操作yi+1–yi部分积初值清零例6.23已知x=+0.0011y=–0.1011求[x·y]补解:00.000011.110111.110100.001111.110100.001111.11011.0101000.0001111.11011100.000111111.11011111[x]补=0.0011[y]补=1.0101[–x]补=1.1101+[–x]补11.11101101011+[x]补00.00001110101+[–x]补11.1110111101100.00001111101+[–x]补+[x]补∴[x·y]补=1.11011111最后一步不移位补码右移补码右移补码右移补码右移+++++(2)Booth算法的硬件配置A、X、Q均n+2位移位和加受末两位乘数控制0An+1n+2位加法器控制门0Xn+10Qnn+1移位和加控制逻辑计数器C00,110110右移乘法小结原码乘符号位单独处理补码乘符号位自然形成原码乘去掉符号位运算即为无符号数乘法不同的乘法运算需有不同的硬件支持整数乘法与小数乘法完全相同可用逗号代替小数点单选例题假定有4个整数用8位补码分别表示为r1=FEH,r2=F2H,r3=90H,r4=F8H,若将运算结果存放在一个8位寄存器中,则下列运算会发生溢出的是()A.r1×r2B.r2×r3C.r1×r4D.r2×r4r1=-2,r2=-14,r3=-112,r4=-810-13题-128+127左点
本文标题:计算机组成原理第6章_3-2运算方法
链接地址:https://www.777doc.com/doc-4049596 .html