计算机组成原理课件

PPT
  • 阅读 51 次
  • 下载 0 次
  • 页数 80 页
  • 大小 650.276 KB
  • 2022-12-01 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
计算机组成原理课件
可在后台配置第一页与第二页中间广告代码
计算机组成原理课件
可在后台配置第二页与第三页中间广告代码
计算机组成原理课件
可在后台配置第三页与第四页中间广告代码
计算机组成原理课件
计算机组成原理课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 80
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】计算机组成原理课件.ppt,共(80)页,650.276 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-76274.html

以下为本文档部分文字说明:

计算机组成原理课件6.3定点运算移位、加减、乘、除移位器ALU选择器通用寄存器组选择器运算器结构ARM7数据通路•地址端口•寄存器组•乘法器•桶式移位器•ALU•数据端口移位运算1.移位的意义2.算术移位规则3.算术移位与逻辑移位1.移位的意义•移位

运算又叫移位操作。–左移或右移n位相当于乘以或除以2n•当计算机没有乘(除)运算线路时,可以采用移位和加法相结合,实现乘(除)运算。•机器数字长往往是固定的。当机器数左移或右移时,必然会使其低位或高位出现空位。–对空出的空位应该添补0还是1呢?•这与机器数采用有符

号数还是无符号数有关。–对有符号的移位叫算术移位,无符号数的移位称逻辑移位。a1a2…an-1ana2…an-1an出现的空位该如何填补?左移2.算术移位•算术移位:有符号数移位–特点:移位前后符号位保持不变。•正数:由于[x]原=[x]补=[x]反=真值,故移位后出现的空位均以0添之。•负数:

原码–不论左移或右移,添补代码均为0–原因:负数的原码其数值部分与真值相同。•算术运算是对真值操作。在计算机中对真值的机器数操作后,应该保证真值的一致性和运算结果的正确性。2.算术移位•负数:反码–不论左移或右移,添补代码均为1–原因:负数的反码其各位除符号位外与负数的原码正好相反。反码数值

部分填补代码1,相当于“真值”的数值部分填补代码0。•负数:补码–分析任意负数的补码:当对其由低位向高位找到第一个“1”时,在此“1”左边的各位(高位)均与对应的反码相同,而在此“1”右边的各位(低位,包括此“1”在内)均与对应的原码相同。•右移时空位出现在高位,则添补的代码应与反码相同,即添1;

•左移时空位出现在低位,即添0。不同码制机器数移位后的空位添补规则码制添补代码正数原码、补码、反码0负数原码0补码左移添0右移添1反码1例题(Page.235)•设机器数字长为8位(含一位符号位),若A=±26,写出三种机器数(原码、补码、反码)左、右移一位和两位后的表示形

式及对应的真值,并分析结果的正确性。•(1)A=+26=(+11010)2•移位前•左移一位:+52•右移一位:+13•左移、右移两位:略000110100011010000001101对于正数,三种机器数移位后符号位不变,如果左移时最高数位丢1,结

果“出错”;如果右移时最低数位丢1,影响精度。例题(Page.235)•(2)A=-26=(-11010)2•原码移位前•原码左移一位:-52•原码右移一位:-13•补码移位前•补码左移一位:-52•补码右移一位:-131001101010110100100011011

11001101100110011110011例题(Page.235)•(2)A=-26=(-11010)2•反码移位前•反码左移一位:-52•反码右移一位:-13•对于负数,三种机器数移位后符号位均不变。•如果负数的原码左移时,高位丢1,结果出错;低位丢1,影响精度。•如果

负数的补码左移时,高位丢0,结果出错;低位丢1,影响精度。•如果负数的反码左移时,高位丢0,结果出错;低位丢0,影响精度。111001011100101111110010例题(Page.235)移位操作机器数对应的真值移位前原码1,0011010-26左移一位1,01101

00-52左移两位1,1101000-104右移一位1,0001101-13右移两位1,0000110-6移位前补码1,1100110-26左移一位1,1001100-52左移两位1,0011000-104右移一位1,1110011-13右移两位1,1111001-7移位前反码1

,1100101-26左移一位1,1001011-52左移两位1,0010111-104右移一位1,1110010-13右移两位1,1111001-6实现算术左移和右移操作的硬件框图(d)负数反码的移位操作(a)真值为正的三种机器数的移位操作(

b)负数原码的移位操作(c)负数补码的移位操作3.逻辑移位•无符号数的移位称为逻辑移位。•逻辑移位的规则–逻辑左移时,高位移出,低位添0;–逻辑右移时,低位移出,高位添0。•例1:寄存器内容为01010011–逻辑左移为10100110–算术左移为00100110(最高数位“1”移丢)•

例2:寄存器内容为10110010–逻辑右移为01011001–若将其视为补码,算术右移为11011001采用带进位(Cy)的移位•为了避免算术左移时最高数位丢1,可采用带进位(Cy)的移位–符号位移至Cy,最

高数位就可避免移出。左移可以由右移位实现a7a6a5a1a0a4a3a2a7a6a5a1a0a4a3a2循环右移两位右移两位左移8-2位左移i位等价于右移32–i位移位寄存器•移位寄存器应用很广,是高速微处理器中的常用部件–用于实

现移位指令、浮点计算中的小数点对齐等。–可构成移位寄存器型计数器:•顺序脉冲发生器;•串行累加器;•可用于串并数据转换。Q0Q1Q2Q3DSRD0D1D2D3DSLCRMBMACP74LS194双向移位寄存器74LS194的功能CRCPMBMAQ0Q1Q2Q300000100

保持101DSR右移一位110左移一位DSL111D0D1D2D3(并行输入)••桶式移位器BS(BarrelShifter)•BS能在单周期内完成多种方式、各种位数的移位操作。–算术移位、逻辑移位、循环移位•针对不同的控制方式,BS有多种实现方式:–全译码方式–全编码(不译码)方式–部分译

码方式–基于三值逻辑控制的方式BS的实现BSin[31:0]out[31:0]b4b3b2b1b0In[31:0]:32位输入Out[31:0]:32位输出B[4:0]:移位位数Sin1,Sin2:移位方式左移、右移、循环、保持Sin2Sin1全译码

方式•对表示移位次数的二进制位进行完全译码,分别给出各种移位的单独控制线。•对于32位字长来说,移位部分有32根控制线SC31~SC0分别控制移31~0位时的操作….移位输出移位输入b0b1b2b3b4SC0SC1SC315-32译码8位全译码方式BS右移两位:010a'0a

0a'1a1a'2a2a'3a3a'4a4a'5a5a6a'6a'7a7a'0a0a'1a1a'2a2a'3a3a'4a4a'5a5a6a'6a'7a7in2in1Sin1a7SC0SC1SC2SC3SC4SC5SC6SC7D0/1Sin2加法和减法运算1.补码加减的基本公式2.溢出判断3

.补码加减法所需的硬件配置4.补码加减运算控制流程加减法运算•原码加减法比较复杂,需要事先判断数的符号,然后决定做加法还是做减法运算。•补码的加减法运算比较简单,采用补码加减法运算,可将“正数加负数”的操作,转化为“正数加正数”的操作。一般计算机采取补码进

行加减法运算。•因减法运算可看作被减数加上一个减数的负值,即A-B=A+(-B),故在此将机器中的减法运算和加法运算合在一起讨论。•符号位参与运算1.补码加减的基本公式•补码加法的基本公式为:整数[A]补+[B]补=[A+B]补(mo

d2n+1)小数[A]补+[B]补=[A+B]补(mod2)•对于减法–因A-B=A+(-B),则[A-B]补=[A+(-B)]补,由补码加法基本公式可得:整数[A-B]补=[A]补+[-B]补(mod2n+1)小数[A-B]补=[A]补+[-B]补(m

od2)[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补(d)(-7)+(-6)1,0011,0100,011=溢出(b)(-4)+(+4)1,1000,1000,000=0(c)(+5)+(+4)0,1010,1

001,001=溢出(a)(-7)+(+5)1,0010,1011,110=-2运算过程举例(假设机器字长4位,其中1位表示符号位):补码的加、减法的例子1丢掉计算机中这种超出机器字长的现象,称为溢出。在补码定点运算中,必须对结果是否溢出进行判断。1••2.溢出判断

•如果运算的结果,超出了计算机能表示的数的范围,会得出错误的结果,这种情况称为溢出。–对于字长为n的计算机,那么它能表示的定点补码范围为-2n-1≤X≤2n-1-1–若运算结果小于-2n-1或大于2n-1-1,则发生溢出–发生溢出时数值的有效位

占据了符号位。•两种方法①用一位符号位判断溢出②用两位符号位判断溢出用一位符号位判断溢出•两个相同符号数相加,其运算结果符号应与被加数相同,否则产生溢出;•相异符号数相加,相同符号数相减,不会产生溢出。•两个相异符号数相减,其运算结果符号应与被

减数相同,否则产生溢出。•由于减法运算在机器中是用加法器实现的,如此有如下结论:–无论是加法还是减法,只要实际参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,结果又与原操作数的符号不同,即为溢出。••用一位符号位判断溢出•准则:“两个相同符号数相加,其运算结果符号应与

被加数相同,否则产生溢出”–这种判断方法不容易由硬件来实现。•先判断操作数的符号是否相同,再判断结果的符号与原操作数的符号是否相同•通常用符号位产生的进位和最高有效位向符号位产生的进位进行异或操作后,按其结果进行判断。

–若异或结果为1(即不同),则溢出;–若异或结果为0(即相同),则没有溢出。–快![X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补(d)(-7)+(-6)1,0011,0100,011=溢出(b)(-4)+(+4)1,1000,1000,000=0(c)(+5)+(

+4)0,1010,1001,001=溢出(a)(-7)+(+5)1,0010,1011,110=-2运算过程举例(假设机器字长4位,其中1位表示符号位):补码的加、减法的溢出判断1丢掉1••用两位符号位判断溢出•变形补码•用变形补码做加法操作时,两位符号位连同

数值部分一起参加运算。•运算结果溢出判断规则:–正常时两个符号位的值相同–两个符号位不同,则表明发生了溢出。)4mod(10401][xxxxx补双符号位溢出判断法双符号含义:00表示运算结果为正数;01表示运算结果正溢出;10表示运算结果负溢出;11表示运算结果为负数

。第一位符号位为运算结果的真正符号位。例1解:[X]补=11.0110+1=11.0111+[Y]补=11.1010+1=11.1011[X+Y]补=111.0010最高位1丢掉两个符号位相同,运算结果无溢出最终结果为:X+Y=-0.1110设有效

数值位为4,X=-0.1001,Y=-0.0101,求[X+Y]=?例4解:[X]补=11.0100+1=11.0101[Y]补=00.0111[-Y]补=11.1001[X]补=11.0101+[-Y]

补=11.1001[X+Y]补=110.1110两个符号位10不同,运算结果负溢出。设有效数值位为4,X=-0.1011,Y=0.0111,求[X-Y]=?3.补码加减法所需的硬件配置X+14.补码加减运算控制流程乘法运算1.笔乘算法的分析与改进2.原码乘法–原码一位乘运算

规则–原码一位乘所需的硬件配置–原码一位乘控制流程–原码两位乘3.补码乘法–校正法–比较法乘运算规则–补码比较法(Booth乘法)所需的硬件配置–补码比较法(Booth乘法)控制流程–补码两位乘1.分析笔算乘法•

设A=0.1101,B=0.1011,求A×B。•乘积的符号由两数符号心算而得:正正得正•数值部分的运算如下:•所以A×B=+0.10001111•被乘数A的多次左移,以及四个位积的相加运算。若计算机完全模仿笔算乘法步骤,将会有两大困难:

其一,将四个位积一次相加,机器难以实现;其二,乘积位数增长了一倍,这将造成器材的浪费和运算时间的增加。笔算乘法的改进•A•B=A•0.1011=0.1A+0.00•A+0.001•A+0.0001•A=0.1A+0.00•A+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-1A)]}=2-1{A+2-1[0•A+2-1(A+2-1(A+0))]}•两数相乘的过程,可视作加法和移位(乘2-

1相当于做一位右移)两种运算,这对计算机来说是非常容易实现的。笔算乘法的改进•2-1{A+2-1[0•A+2-1(A+2-1(A+0))]}•从初始值为0开始,对上式作分步运算,则第一步:A+0=0.1101+0.0000=0.1101第二步:2-1(A+0)=0.01101第三步:A+2-

1(A+0)=0.1101+0.01101=1.00111第四步:2-1[A+2-1(A+0)]=0.100111第五步:0•A+2-1[A+2-1(A+0)]=0.100111第六步:2-1{0•A+

2-1[A+2-1(A+0)]}=0.0100111第七步:A+2-1{0•A+2-1[A+2-1(A+0)]}=1.0001111第八步:2-1{A+2-1[0•A+2-1(A+2-1(A+0))]}=0.10001111笔算乘法规则•①乘法运算可用移位和加法来实现,当两个四位数相乘,总共需

做四次加法和四次移位。②由乘数的末位值确定被乘数是否与原部分积相加,然后右移一位,形成新的部分积;同时,乘数也右移一位,由次低位作新的末位,空出最高位放部分积的最低位。③每次做加法时,被乘数仅仅与原部分积的高位相加,其低位被移至乘数所空出

的高位位置。•计算机很容易实现这种运算规则:用一个寄存器存放被乘数,一个寄存器存放乘积的高位,又用一个寄存器存放乘数及乘积的低位,再配上加法器及其他相应电路,就可组成乘法器。2.原码一位乘•原码一位乘运算规则•原码一位乘所需的硬件配置•原码一位乘控制流程原码

一位乘运算规则•以小数为例,设[x]原=x0.x1x2…xn,[y]原=y0.y1y2…yn,则•其中•乘积的符号通过两数符号的逻辑异或求得。•乘积的数值部分由两数绝对值相乘,其通式为:).0)(.0.([y][x]212

100nnyyyxxxyx原原*21*21y.0x.0yyyyxxxxnn的绝对值,记作为的绝对值,记作为原码一位乘运算规则•如此,基于前面对笔算乘法的分析和改进,可得原码一位乘的运算方法。例•已知:x=-0.

1110,y=-0.1101;求:[x·y]原。•解:[x]原=1.1110,x*=0.1110,x0=1[y]原=1.1101,y*=0.1101,y0=1即x*·y*=0.10110110乘积的符号位为x0和y0的异或,即0。故[x·y]原=0.10110110。

部分积乘数说明0.0000+0.11101101开始部分积z0=0乘数为1,加上x*0.11100.0111+0.00000110→1位得z1,乘数同时→1位乘数为0,加上00.01110.0011+0.11101011→1位得z2,乘数同时→1位乘数为1,加上

x*1.00010.1000+0.11101101→1位得z3,乘数同时→1位乘数为1,加上x*1.01100.10110110→1位得z4乘数已全部移出原码一位乘所需的硬件配置原码一位乘控制流程4.补

码乘法•补码一位乘运算规则–校正法–比较法(Booth算法)•补码Booth算法所需的硬件配置•补码Booth算法控制流程•补码两位乘补码一位乘运算规则•设被乘数[x]补=x0.x1x2…xn,乘数[y]补=y0.y1y2…yn•两个引理①被乘数x符号任意,乘

数y的符号为正时,有:[x•y]补=[x]补•[y]补=[x]补•(0.y1y2…yn)②被乘数x符号任意,乘数y的符号为负时,有:[x•y]补=[x]补•[y]补=[x]补•(0.y1y2…yn)+[-x]补补码一位乘运算规

则证明•设被乘数[x]补=x0.x1x2…xn,乘数[y]补=y0.y1y2…yn①被乘数x符号任意,乘数y的符号为正时,有:[x•y]补=[x]补•[y]补=[x]补•y•证明:yxyxyxxyxyxyyyxyyyyyyyyyxyyyxyxy

xyyyyyxxxxxxxnnniininiininniiinnnnnn补补补补补补补补补补补补则根据模运算的性质,有的正整数,则是一个大于或等于又,则,由于则][][][][)2mod(][2

2][][)2mod(22122222.02)2(][][][.0][)2mod(22.][1111112111211210补码一位乘运算规则证明(续)•设被乘数[x]补=x0.x1x2…xn,乘数[y]

补=y0.y1y2…yn②被乘数x符号任意,乘数y的符号为负时,有:[x•y]补=[x]补•[y]补=[x]补•(0.y1y2…yn)+[-x]补证明:补补补补补补补补补补补所以,第一种情况相同。视为一个正数,正好与将上式中的则则][).0(][][).0(][)].0([.

0][)].0([][).0()1.0(1.02.12][)2mod(2.1][.][21212121212121212121210xyyyxyxyyyxyyyxyyyxyyyxyxxyyyxyyyxxyyyyyyyyyyyyyyxxxxxnnnnnnnnn

nn补码一位乘运算规则(总结)①被乘数x符号任意,乘数y的符号为正时,有:[x•y]补=[x]补•[y]补=[x]补•y)][][(2][][)][][(2][)][][(2][)][][(2][0][11111111

120110补补补补补补补补补补补补补补nniininnzxyzyxzxyzzxyzzxyzz②被乘数x符号任意,乘数y的符号为负时,有:[x•y]补=[x]补•[y]补=[x]补•(0.y1y2…yn)+[

-x]补补码一位乘运算规则——校正法•当乘数y为正时,可按类似原码乘法的规则进行运算。•当乘数为负时,把乘数的补码[y]补去掉符号位,看成一个正数与[x]补相乘,然后加上[-x]补进行校正。–按补码进行运算•按补码的规则进行移位:右移补1,符号位一起移•“乘数的补码[y]补去掉符号位,当成

一个正数与[x]补相乘”——y仍然是补码–符号位参与运算,自动生成——与原码的不同之处•考虑到运算时可能出现绝对值大于1的情形(但此刻并不是溢出),故部分积和被乘数取双符号位。例•已知:[x]补=1.0101,[y]补=0.1101,求:[x·y]补

。•解:因为乘数y>0,不用校正。故乘积[x·y]补=1.01110001部分积乘数说明00.0000+11.01011101初值[z0]补=0Y4=1,+[x]补11.010111.10101110→1位,得[z1]补,乘

数同时→1位Y3=0,不加[x]补11.1101+11.01010111→1位,得[z2]补,乘数同时→1位Y2=1,+[x]补11.001011.1001+11.01010011→1位,得[z3]补,乘数同时→1位Y1=1,+[x]补10.111011.01110001→1位,得[z4]补

注意:符号位参加运算!——与原码不同补码一位乘比较法(Booth算法)•现在广泛使用的是Booth算法,也称为比较法,其运算规则由校正法导出。•设被乘数[x]补=x0.x1x2…xn,乘数[y]补=y0.y1y2…yn①被乘数x符号任意,

乘数y的符号为正时,有:[x•y]补=[x]补•[y]补=[x]补•y②被乘数x符号任意,乘数y的符号为负时,有:[x•y]补=[x]补•[y]补=[x]补•(0.y1y2…yn)+[-x]补综合①和②,被乘数x符号任意,乘数y符号任意,有:[x•y]补=[x]补•[y

]补=[x]补•(0.y1y2…yn)-[x]补•y0前提:[-x]补=-[x]补补码一位乘比较法(Booth算法)0)]2)(2)(2)()[(][)]2)0(2)(2)()[(][)]22()22()2([][)222(][][)222(][][11)1(111201)1(

111201)1(221211102211002211=其中补补补补补补补nnnnnnnnnnnnnnnnnnnnyyyyyyyyyxyyyyyyyxyyyyyyy

xyyyyxyxyyyxyx补补补补补补补补补补补补补补补补补如此,可得递推公式:])[(][][][}])[(]{[2][}])[(]{[2][}])[(]{[2][}])[(]{[2][0][0111211121111121

0110xyyzzyxxyyzzxyyzzxyyzzxyyzzznnnnininiinnnn补码一位乘比较法(Booth算法)•在Booth算法中,操作的方式取

决于表达式(yi+1-yi)的值。yiyi+1yi+1-yi操作000部分积右移一位011部分积加[x]补,再右移一位10-1部分积减[x]补,再右移一位110部分积右移一位例•已知:[x]补=0.1101

,[y]补=0.1011,求:[x·y]补。•解:如下表,可得[x·y]补=0.10001111部分积乘数yn附加位yn+1说明00.0000+11.0011010110初值[z0]补=0Ynyn+1=10,部分积加[-x]

补11.001111.100111.1100+00.1101101011101011→1位,得[z1]补Ynyn+1=11,部分积→1位得[z2]补Ynyn+1=01,部分积加[x]补00.100100.0100+11.00111

1111010→1位,得[z3]补Ynyn+1=10,部分积加[-x]补11.011111.1011+00.1101111101→1位,得[z4]补Ynyn+1=01,部分积加[x]补00.10001111最后一步不移位,得[

x·y]补补码比较法(Booth算法)所需的硬件配置补码一位乘比较法控制流程除法运算1.分析笔算除法2.原码除法–恢复余数法–加减交替法–原码加减交替法所需的硬件配置–原码加减交替除法控制流程3.补码除法(不讲)–恢复余数法(少用)–补码加减交替法运算规则–补码加减交替法所需的硬件配置–补

码加减交替除法控制流程1.分析笔算除法•以小数为例,设x=-0.1011,y=0.1101,求x/y。•商的符号心算而得:负正得负•其数值部分的运算如下面竖式•所以商x/y=0.1101,余数=-0.0000011

1分析笔算除法•二进制除法实质是“作被除数(余数)和除数的减法,求新的余数”的过程①每次上商都是由心算来比较余数(被除数)和除数的大小,确定商为1还是0。②每做一次减法,总是保持余数不动,低位补0,再减去右移后的除数。③商符单独处理。•主要问题:①机器不能“心算”上商。②按照每次减法总是保持余数不

动低位补0,再减去右移后的除数这一规则,则要求加法器的位数必须为除数的两倍。③笔算求商时是从高位向低位逐位求的,而要求机器把每位商直接写到寄存器的不同位也是不可取的。分析笔算除法•解决办法:①机器不能“心算”上商–必须通过比较被除数(或余数)和除数绝对值的大小来确定商值,即|x|-|y|,若差

为正(够减)上商1,差为负(不够减)上商0。②按照每次减法总是保持余数不动低位补0,再减去右移后的除数这一规则,则要求加法器的位数必须为除数的两倍。–右移除数可以用左移余数的办法代替,其运算结果是一样的,但对线路结构更有利。不过此刻所得到

的余数不是真正的余数,只有将它乘上2-n才是真正的余数。③笔算求商时是从高位向低位逐位求的,而要求机器把每位商直接写到寄存器的不同位也是不可取的。–计算机可将每一位商直接写到寄存器的最低位,并把原来的部分商左移一位。2.原码除法①恢复

余数法②加减交替法(不恢复余数法)③原码加减交替法所需的硬件配置④原码加减交替除法控制流程原码除法•原码除法和原码乘法一样,符号位是单独处理的。•以小数为例,设式中为x的绝对值,记作x*为y的绝对值,记作y*•即商符由两数符

号位“异或”运算求得,商值由两数绝对值相除(x*/y*)求得。•小数定点除法对被除数和除数有一定的约束,即必须满足条件:0<|被除数|≤|除数|(一)恢复余数法试商:商值的确定是通过比较被除数和除数的绝对值大小,即通过x*-y*实现的:如果余数为正,

说明“够减”,商上“1”;如果余数为负,说明“不够减”,商上“0”。由于不够减而减了,必须将除数加回去,恢复成原来的余数。机器内只设加法器,故需将x*-y*操作变为[x*]补+[-y*]补的操作。因此,在判断“够减”,“不够减”作减法时,采用的是补码运算。例•

已知:x=-0.1011,y=-0.1101,求:[x/y]原•解:由x*=0.1011,[x]原=1.1011y*=0.1101,[-y*]补=1.0011,[y]原=1.1101商值的求解过程如下:例(续)被除数(

余数)商说明0.1011+1.00110.0000+[-y*]补(减去除数)1.1110+0.11010余数为负,上商0恢复余数+[y*]补0.10111.0110+1.00110被恢复的被除数←1位+[-y*]

补(减去除数)0.10011.0010+1.00110101余数为正,上商1←1位+[-y*]补(减去除数)0.01010.1010+1.0011011011余数为正,上商1←1位+[-y*]补(减去除数)1.1101+0.11010110余数为负,上商0恢复余数+[y*

]补0.10101.0100+1.00110110被恢复的被除数←1位+[-y*]补(减去除数)0.011101101余数为正,上商1例(续)•故商值为0.1101•商的符号位为•商的位数与操作数的位数相同时,或余数为0时,停止计算•该例中,共上商5次•第一次上的商在商的整数位上,

对小数除法而言,可用它作溢出判断。–即当该位为“1”时,表示此除法为溢出,不能计算进行,应由程序进行处理,重新选择比例因子;–当该位为“0”时,说明除法合法,可以进行计算。•在恢复余数法中,每当余数为负时,都需恢复余数,这就延长了机器除法的时间,操作也很不规则,对

线路结构不利。(二)加减交替法•根据原码恢复余数法,有:–当余数Ri>0时,可上商“1”,再对Ri左移一位后减除数,即2Ri-y*。–当余数Ri<0时,可上商“0”,然后再做Ri+y*,即完成恢复余数的运算,再做左移和减除数,即2(Ri+y*)-y*,也即2Ri+y

*。–因此,原码恢复余数法可归纳为:当余数Ri>0时,商上“1”,做2Ri-y*的运算;当余数Ri<0时,商上“0”,做2Ri+y*的运算。•这里已看不出余数的恢复问题了,而只是做加y*或减y*,因此,一般把它叫做加减交替法或不

恢复余数法。例•已知x=-0.1011,y=0.1101,求:[x/y]原•解:由x*=0.1011,[x]原=1.1011y*=0.1101,[-y]补=1.0011,[y]原=0.1101商值的求解过程如下:例(续)被除数(余数)商说明0.1011

+1.00110.0000+[-y*]补(减除数)1.11101.1100+0.110100余数为负,上商0←1位+[y*]补(加除数)0.10011.0010+1.00110101余数为正,上商1←1位+[-y*]补(减除数)0.0

1010.1010+1.0011011011余数为正,上商1←1位+[-y*]补(减除数)1.11011.1010+0.110101100110余数为负,上商0←1位+[y*]补(加除数)0.011101101

余数为正,上商1例(续)•商的符号位为•所以[x/y]原=1.1101•分析此例可见,n位小数的除法共上商n+1次,第一次商用来判断是否溢出。•倘若比例因子选择恰当,除数结果不溢出,则第一次商肯定是0。如果省去这位商,只需上商n次即可,此时除法运算一开始应将被除

数左移一位减去除数,然后再根据余数上商。原码加减交替法所需的硬件配置被除数字长可以是除数的两倍,开始时其低位放在Q中,逐步左移到A中被除数除数1:-y0:+y原码加减交替除法控制流程整数除法•算法与小

数除法相同•初始条件–0<|除数|<=|被除数|小结•移位–算术移位、逻辑移位•加、减–补码–溢出判断(1位符号位、两位符号位)•乘–原码一位乘–补码(校正法、比较法(Booth法))•除–原码(恢复余数法、不恢复余数法(加减交替法))–

补码(加减交替法)

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?