Lecture-6-定点乘法省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第1页
Lecture-6-定点乘法省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第2页
Lecture-6-定点乘法省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第3页
Lecture-6-定点乘法省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第4页
Lecture-6-定点乘法省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

问题分析手工乘法运算方法在计算机实现时面临困难原码一位乘中,怎样把乘法运算转化为加法运算?原码一位乘中,需要屡次经过加法运算和移位得到部分和,效率低,怎样提升乘效率?1/38A=–0.1101B=0.1011A×B=0.11010.1011×2/38定点乘法运算3/38课程结构4/38分析笔算乘法A=–0.1101B=0.1011A×B=–0.100011110.11010.101111011101000011010.10001111符号位单独处理乘数某一位决定是否加被乘数4个位积一起相加,8位加法乘积位数扩大一倍×乘积符号心算求得

?5/38笔算乘法改进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{1

•

A+0.1[0

•

A+0.1(1

•

A+0.1(1

•

A)]}=2-1{1•A

+2-1[0

•

A+2-1(1•A

+

2-1(1•A+0))]}①②⑧第一步0+被乘数A第二步右移一位,得新部分积第八步右移一位,得结果③第三步部分积

+

被乘数…右移一位6/38改进后笔算乘法过程(竖式)0.00000.11010.11010.11010.00000.1101初态,部分积=0乘数为1,加被乘数乘数为1,加被乘数乘数为0,加01.001110.1001111.0001111乘数为1,加被乘数0.100011111,得结果1011=0.01101,形成新部分积1101=0.10011,形成新部分积1110=0.01001,形成新部分积1111=

部分积乘数说明++++7/38笔算小结

被乘数只与部分积高位相加

由乘数末位决定被乘数是否与原部分积相加,然后1位形成新部分积,同时乘数

1

位(末位移丢),空出高位存放部分积低位。硬件3

个存放器(被乘数、乘数、部分积),含有移位功效1

个n位全加器

乘法运算可用加和移位实现

n=4,加4次,移4次8/38以小数为例设[x]原

=x0.x1x2

xn…[y]原

=y0.y1y2

yn…=(x0

y0).x*y*[x

•y]原

=(x0

y0).(0.x1x2

xn)(0.y1y2

yn)……式中x*=0.x1x2

xn

为x

绝对值…y*=0.y1y2

yn

为y

绝对值…乘积符号位单独处理x0

y0数值部分为绝对值相乘x*•

y*原码一位乘-运算规则9/38x*•

y*=x*(0.y1y2

yn)…=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原码一位乘-递推公式10/38例已知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*11/38②数值部分按绝对值相乘①乘积符号位

x0

y0=10=1x*•

y*=0.10110110则[x

•

y]原

=1.10110110特点绝对值运算逻辑移位结果用移位次数判断乘法是否结束12/38原码一位乘-逻辑实现13/38(x)×(y)→A操作流程14/38原码两位乘(自学)原码乘符号位和数值位部分分开运算两位乘每次用乘数2位判断原部分积是否加和怎样加被乘数11100100

加“0”2加1倍被乘数2加2倍被乘数2加3倍被乘数23?先减1倍被乘数再加4倍被乘数4–13100–0111

新部分积乘数yn-1

yn(X+4Y)/4=X/4+Y部分积加4倍被乘数,然后右移2位等价于部分积右移两位,然后加被乘数15/38111110101100011010001000操作内容标志位Cj乘数判断位yn-1yn

z2,y*2,Cj

保持“0”

z2,y*2,Cj

保持“1”z–x*2,y*2,Cj

保持“1”

z+2x*2,y*2,Cj

保持“0”z+x*2,y*2,Cj

保持“0”共有操作+x*+2x*–x*2实际操作

+[x*]补

+[2x*]补

+[–x*]补

2补码移z–x*2,y*2,Cj置“1”z+2x*2,y*2,Cj置“0”z+x*2,y*2,Cj置“0”原码两位乘-运算规则(X+4Y)/4=X/4+Y部分积加4倍被乘数,然后右移2位等价于部分积右移两位,然后加被乘数16/38例已知x=0.111111y=–0.111001求[x·y]原000.000000000.111111000.11111100.1110010初态

z0=0+x*,Cj=0010.00110111000.111000000111111.1001000111001.111110+2x*,Cj=0111.000001–x*,Cj=1000.111111+x*,Cj=00000.001111110011

1020000.100011011100

1121111.111001000111002Cj部分积乘数

说明补码右移补码右移解:数值部分运算补码右移++++17/38②数值部分运算①乘积符号位

x0

y0=01=1x*•

y*=0.111000000111则[x

•

y]原

=1.111000000111结果特点绝对值补码运算算术移位用移位次数判断乘法是否结束18/38原码两位乘和原码一位乘比较符号位操作数移位移位次数最多加法次数x0

y0x0

y0绝对值绝对值补码逻辑右移算术右移nnn2(n为偶数)n2+1(n为偶数)思索

n

为奇数时,原码两位乘移?次最多加?次原码一位乘原码两位乘19/38原码两位乘-两个例子例X=0.100111,Y=0.100111,则:[-|X|]补=1.011001

部分积乘数欠位C000.0000000010011101

C

+[-X]补111.011001111.011001右移2位111.1101100100100110

C

+2X001.001110001.000100右移2位000.0100010001001000

C

+2X001.001110001.011111右移2位000.010111110001

00020/38原码两位乘-两个例子例X=0.1001110,Y=0.1001110,则:[-|X|]补=1.0110010

部分积乘数欠位C+0000.0000000001001110000

C

右移2位000.0000000000010011101

C

+[-X]补111.0110010111.0110010右移2位111.1101100100000100110

C

+2X001.0011100001.0001000右移2位000.0100010001000001000

C

+2X001.0011100001.0111110右移2位000.010111110001000

00021/38原码两位乘-两个例子X=0.1001110,Y=0.1001110,则:[-|X|]补=1.0110010

部分积乘数欠位C

0000000000010011100

0C+2x00100111000010011100右移2位00001001110001001101C+[-|x|]补11101100101111011001右移2位11111101100100010010C+x00010011100001000100右移2位00000100010001000100C+x00010011100001011111右移1位000010111110001000

22/38特点:符号位参加乘法运算,运算结果用补码表示补码与真值关系设[x]补=x0.x1x2…xn,当真值x>=0时,x0=0[x]补=x=0.x1x2…xn=当真值x<0时,x0=1,[x]补=1.x1x2…xn=2+xx=[x]补-2=1.x1x2…xn-2

=-1+0.x1x2…xn=-1+综合:x=-x0+补码一位乘法23/38设被乘数[X]补=x0.x1x2…xn,乘数[Y]补=y0.y1y2…yn

,则有

[X·Y]补=[X]补·(-y0+

)证实:(1)X正负任意,Y为正数

[X]补==2+X=2n+1+Xmod2,[Y]补=Y则:[X]补·[Y]补=2n+1·

Y+X·Y=2+X·Ymod2

所以:[X]补·[Y]补=[X·Y]补=[X]补·(0.y1y2…yn)

(2)X正负任意,Y为负数

[X]补=x0.x1x2…xn,[Y]补=1.y1y2…yn=2+YY=0.y1y2…yn-1X·Y=X(0.y1y2…yn)-X

[X·Y]补=[X(0.y1y2…yn)]补+[-X]补

=[X]补(0.y1y2…yn)+[-X]补

综合:[X·Y]补=[X]补(-Y0+)补码一位乘法0.xxxx10.xxxx10000.xxxx0.yyyyyyyy0.000024/38设[x]补

=x0.x1x2

xn[y]补

=y0.y1y2

yn……[x

·y]补=[x]补(0.y1

yn)–[x]补

·y0…=[x]补(y12-1+y22-2++yn2-n)–[x]补

·y0…=[x]补(–y0+y1

2-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)]…

Y020

+Y12-1++…Yn

2-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算法)25/38[z0]补=0[z1]补=2-1{(yn+1–yn)[x]补+[z0]补}yn+1=0[zn]补=2-1{(y2–y1)[x]补+[zn-1]补}…[x

·

y]补=(y1–y0)[x]补+[zn]补最终一步不移位怎样实现

yi+1–yi

?000110111+[x]补

1+[–x]补

1101-10yi

yi+1操作yi+1–yi补码一位乘运算规则(Booth算法)[x

·

y]补=(y1-y0)

[x]补+{(y2-y1)[x]补+{(y3-y2)[x]补+…{(yn-yn-1)

[x]补+{(yn+1-yn)

[x]补+0}

2-1}2-1…}2-1

}2-126/38运算规则以下:①

符号位参加运算,运算数均以补码表示。②

被乘数取双符号位参加运算,部分积初值为0。③

乘数取单符号位.④

乘数末位增设附加位yn+1,且初值为0。⑤

按下表进行操作。(右移为算术右移)⑥按照上述算法进行n+1步操作,但第n+1步不再移位,补码一位乘运算规则(Booth算法)27/38例已知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.111011010

11+[x]补00.00001110101+[–x]补11.1110111101100.00001111101+[–x]补+[x]补∴

[x·y]补

=1.11011111

最终一步不移位补码右移补码右移补码右移补码右移+++++28/38补码一位乘-Booth算法硬件配置A、B、Q均n+2位移位和加受末两位乘数控制0

A部分积n+1n+2位加法器控制门0B被乘数

n+10Q乘数n

n+1移位和加控制逻辑计数器CGM00,110110右移29/38补码一位乘-Booth算法流程30/38阵列乘法器-不带符号二进制数

a4a3a2a1a0 ×b4b3b2b1b0 00000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论