计算机组成原理:4-4 数值的机器运算_第1页
计算机组成原理:4-4 数值的机器运算_第2页
计算机组成原理:4-4 数值的机器运算_第3页
计算机组成原理:4-4 数值的机器运算_第4页
计算机组成原理:4-4 数值的机器运算_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

复习思考题10对二进制数,若小数点右移1位,则数值乘以2;已知[X/2]补=C6H,设机器字长为8位,则[X]补=8CH

;若两个数值位为n位长的定点数,采用原码算法实现乘法运算,则乘积的数值有2n位,其符号位由异或运算决定;第四章数值的机器运算4.0逻辑电路基础4.1基本算术运算的实现4.2定点加减运算4.3带符号数的移位和舍入操作4.4定点乘法运算4.5定点除法运算4.6规格化浮点运算4.7十进制加法器4.9运算器和基本组成与实例补码一位乘法算法流程图

开始结束[zi]补+[X]补→[zi]补[zi]补+[-X]补→[zi]补[z]补=0,i=0YnYn+1=?[zi]补不变i=n+1?[zi]补,Y右移一位,i=i+1011000或11YN重复n+1步,但最后一步不移位被乘数和符号(双符号)和乘数(单符号)参加运算部分积初值为0(双符号)乘数末尾附加一个0(Yn+1=0)所得乘积是2n+1位

00.00000.10110Yn+1=0+00.1101YnYn+1=10,加[-X]补

00.110100.0110101011右移一位+00.0000YnYn+1=11,加000.011000.00110

10101右移一位+11.0011YnYn+1=01,加[X]补

11.011011.1011001010右移一位+00.1101YnYn+1=10,加[-X]补

00.100000.01000001

01右移一位+11.0011YnYn+1=01,加[X]补

11.01110001

10最后一位不移位[P106例4-9][X]补=11.0011,[Y]补=0.1011,求[X·Y]补=?部分积

乘数YnYn+1说明[-X]补=00.1101[X·Y]补=1.01110001X·Y=-0.10001111补码一位乘逻辑原理图

R0→

R1→YnYn+1R2

计数器i

部分积z

被乘数X乘数Y

+1LDR0LDR1

T1,T2,…+1

Ti

QQ加法器RS启动CXf

+-Yn+1YnYn+1Yn多路开关原反1001QQ&&&被乘数寄存器R2的每位用原码(触发器Q端)或反码(触发器非Q端)经多路开关送出;送[-X]补时,即送R2反码且在加法器最末位加1串行乘法器的优劣分析•不需要很多器件,硬件结构简单;•速度太慢,执行一次乘法操作的时间至少是加法操作的n倍;由于乘法操作大约占全部算术运算的1/3,故采用高速乘法部件是非常必要的。

4.4.4

阵列乘法器am-1am-2···

a1a0

)

bn-1···

b1b0

am-1b0am-2b0···

a1b0a0b0am-1b1am-2b1···

a1b1a0b1......+)am-1bn-1am-2bn-1

···a1bn-1a0bn-1pm+n-1pm+n-2pm+n-3···

pn-1···p1p0手工方法运算过程阵列乘法器——

是资源的重复设置,依靠器件的数量去换取运算速度尽管器件数量大,但结构十分规整,易于IC实现主要用于并行流水线运算器等追求高运算速度的场合。被除数X,其原码为[X]原=Xf.Xn-1…X1X0除数Y,其原码为[Y]原=Yf.Yn-1…Y1Y0

则有商Q=X/Y,其原码为[Q]原=(Xf⊕Yf)+(0.Xn-1…X1X0/0.Yn-1…Y1Y0)商的符号运算Qf=Xf⊕Yf与原码乘法一样;商的数值部分的运算,实质上是两个正数求商的运算。4.5.1

原码一位除法设有n位定点小数:4.5定点除法运算1.手算运算步骤设X=0.1001,Y=0.1011,仿十进制除法运算,手算求X÷Y的过程

0.1101

商Q

0.1011

0.10010

X(R0)

X小于Y,商0

-0.01011

2-1YY右移1位,-Y,商1

0.001110

R1得余数R1

-0.0

01011

2-2YY右移1位,-Y,商1

0.0000110

R2

得余数R2

-0.0

000000

2-3YY右移1位,不减Y,商0

0.00001100

R3

得余数R3

-0.0

0001011

2-4YY右移1位,-Y,商1

0.00000001

R4得余数R4得X÷Y的商Q=0.1101,余数为R=0.00000001。原码除法运算

结果与手算相同,但余数不是真正的余数,多乘了2n,故正确的余数应为2-n×Rn,即:0.0000000100.0001第四次余数R4

01.0010被除数左移一位,2X>Y,商1+11.0101+[-Y]补00.0111第一次余数R1

00.1110R1左移一位,2R1>Y,商1+11.0101减Y00.0011第二次余数R2

00.0110R2左移一位,2R2<Y,商0

00.1100R3左移一位,2R3=4R2>Y,商1+11.0101减Y00.101100.1001X<Y,商000.1101原码除法运算1——比较法它类似于手工运算,为便于机器实现,将除数右移改为余数左移。还要设置比较线路,从而增加硬件代价。X=0.1001Y=0.1011[-Y]补=1.0101

0.1101

0.1011

0.10010

-0.01011

0.001110

-0.0

01011

0.0000110

-0.0

000000

0.00001100

-0.0

0001011

0.00000001

原码除法运算2——恢复余数法它直接作减法来试探——若余数为正,表示够减,该位商上“1”;若余数为负,表示不够减,该位商上“0”,并要恢复原来的被除数(或余数)。恢复余数法由于要恢复余数,使得除法的步数不固定,控制比较复杂。因此,原码恢复余数法在计算机中一般很少采用。0→CnA+B→A1→CnA<0?A-B→AYN[X]补→A,[Y]补→B,0→C原码除法运算3——加减交替法若第i-1次求商的余数为Ri-1,则第i次求商操作为:

Ri=2Ri-1-Y若够减,Ri=2Ri-1-Y>0,商Qi=1。若不够减,Ri=2Ri-1-Y<0,商Qi=0,恢复余数后,Ri’=Ri+Y=2Ri-1,然后再左移一位,进行第i+1次操作:

Ri+1=2Ri’-Y=2(Ri+Y)-Y=2Ri+2Y-Y=2Ri+Y上式表明,当出现不够减(负余数)的情况下并不需要恢复余数,可以直接做下一次操作,但操作是2Ri+Y,其结果与恢复余数后左移一位再减Y等效。

Ri+1=2Ri+(1-2Qi)×Y(Qi=0,1)补码除法运算——加减交替法补码除法的被除数X、除数Y用补码表示,符号位和数位一起参与运算,商的符号位与数位由统一的算法求得。运算规则1.若被除数X与除数Y同号,被除数X减去除数Y;若被除数X与除数Y异号,被除数X加上除数Y。余数R和除数Y同号,商1,余数R左移一位,下次减除数Y

余数R和除数Y异号,商0,余数R左移一位,下次加除数Y。重复步骤(2),连同符号位在内,共做n+1步。商的末位恒置1若商的数值位为n位,则运算的最大误差为2-n。补码加减交替除法规则:[X]补÷[Y]补[X]补与[Y]补第一次操作[Ri]补与[Y]补上商求新余数[Ri+1]补的操作同号[X]补-[Y]补①同号(够减)1[Ri+1]补=2[Ri]补-[Y]补②异号(不够减)0[Ri+1]补=2[Ri]补+[Y]补异号[X]补+[Y]补①同号(不够减)1[Ri+1]补=2[Ri]补-[Y]补②异号(够减)0[Ri+1]补=2[Ri]补+[Y]补00.1000

[X]补,[Y]补异号,+[Y]补

+[Y]补

11.011011.1110[Ri]补和[Y]补同号

11.11001.左移一位,商1

+[-Y]补

00.1010+[-Y]补

00.0110[Ri]补和[Y]补异号

00.11001.0左移一位,

商0

+[Y]补

11.0110+[Y]补

00.0010[Ri]补和[Y]补异号

00.0100

1.00左移一位,商0

+[Y]补

11.0110+[Y]补

11.1010[Ri]补和[Y]补同号

11.0100

1.001左移一位,商1

+[-Y]补

00.1010+[-Y]补

11.11101.0011

商末位恒置1,[Ri]余数不左移

被除数X/余数R商Q说明[X]补=0.1000[Y]补=11.0110[-Y]补=00.1010[P116例4-13]X=0.1000,Y=-0.1010,求X÷Y。[P116例4-13]X=0.1000,Y=-0.1010,求X÷Y。[商]补=1.0011[余数]补=1.11102-4∴商=-0.1101

余数=-0.00102-41.11102-41.0110[X÷Y]补=1.0011+-0.00102-4-0.1010X÷Y=-0.1101+补码加减交替除法算法流程图[X]补→A,[Y]补→B0→C,0→CR0→Cn2A+B→A2C→C1→Cn2A-B→A2C→CCR+1→CRCR=n?EndN.1→CnYAs

Bs=0?A+B→AA-B→ANYAsBs=0?NY.4.6

规格化浮点运算

4.6.1浮点加减运算设两个非0的规格化浮点数分别为:

A=MA×2EA

,

B=MB×2EB

A±B=(MA,EA)±(MB,EB)浮点数加减运算步骤:(1)对阶(2)尾数加减(3)尾数结果规格化(4)舍入处理(5)溢出判断在对阶和尾数结果规格化的过程中,尾数的低位部分可能会丢失,从而造成一定的误差。“切断”、“0舍1入”法,“恒置1”法例:设x=2010×(+0.11011011),y=2100×(-0.10101100),求x+y解:设以补码表示,阶码5位、尾数10位均采用双符号位表示

[x]浮=0001000.11011011

[y]浮=0010011.01010100 ①对阶浮点加减法运算

使二数阶码相同(即小数点位置对齐),这个过程叫作对阶先求两数阶码Ex和Ey之差,即△E=Ex-Ey

若△E=0,表示

Ex=Ey

若△E>0,Ex>Ey

若△E<0,Ex<Ey通过尾数的移动来改变Ex或Ey,使其相等.小阶向大阶看齐;小阶的尾数右移,每右移一位,其阶码加1对阶原则 [x]浮=0001000.11011011

[y]浮=0010011.01010100 ①对阶 △E=Ex-Ey

=[Ex]补+[-Ey]补

=00010+11100

=(11110)补=(-2)10 x的阶码小,应使Mx右移2位,Ex加2 ∴[x]浮=0010000.00110110(11)

其中(11)表示Mx右移2位后移出的最低两位数。浮点加减法运算“切断”的方法浮点加减法运算

[x]浮=0010000.00110110 [y]浮=0010011.01010100②尾数加减

00.00110110

+ 11.01010100 11.10001010 ∴x+y=0010011.10001010无论加法运算还是减法运算,都按加法进行操作浮点加减法运算

尾数相加得:x+y=0010011.10001010 ③尾数结果规格化

尾数运算结果处理操作00.1xxxxxxx尾数已为规格化数,无需处理11.0xxxxxxx00.0xxxxxxx左规——尾数每左移一位,阶码相应减1,直至成为规格化数为止。11.1xxxxxxx01.xxxxxxxx在定点加减运算为溢出;但在浮点加减运算中,只表明此时尾数的绝对值大于1,而并非真正的溢出。右规——尾数运算的结果右移一位,阶码加110.xxxxxxxxx+y=00

01111.00010100浮点加减法运算x+y=0001111.00010100④舍入在对阶和向右规格化的过程中,尾数的低位部分可能会丢失,从而造成一定的误差舍入处理切断法“0舍1入”法“恒置1”法浮点加减法运算

x+y=0001111.00010100⑤溢出判断尾数溢出尾数相加的溢出不是真正的溢出,可通过向右规格化作出调整阶码溢出——浮点数的溢出是以其阶码溢出表现出来的若阶码溢出,则要进行相应的处理。上溢——浮点数真正溢出,机器需停止运算,做溢出中断处理。下溢——超过了阶码所能表示的最小值,按机器零处理。本例中阶码符号位为00,不溢出,故得最终结果为

x+y=(0001111.00010100)补=2011×(-0.11101100)例2:若某次运算的中间结果为[X+Y]补=11001,00.0011则应对其进行向左规格化操作:尾数为:

温馨提示

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

评论

0/150

提交评论