第6章教案

发布时间 : 星期五 文章第6章教案更新完毕开始阅读

计算机组成原理—存储器

[x]/补=00,11;00.0011 2、尾数求和

将对阶后的两个尾数按定点加减法运算规则进行运算。

[x]/补=00,11;00.0011 [y]补 =00,11;11.0110

[Sx+Sy]补=00.0011+11.0110=11.1001 即[x+y]补=00,11;11.1001 3、规格化

尾数S规格化的形式为:

0.5≤|S|<1 (1) ? 当S>0时,0.5≤S<1,其补码规格化形式为: [S]补=00.1×××?× (2) ? 当S<0时,-1<S≤-0.5,其补码规格化形式为: [S]补=11.0×××?× (3) 即当尾数最高位的数值位与符号位不同时,即为规格化形式。 当S<0时,需要处理两种特殊情况:

? S=-0.5,[S]补=11.100?0。对于真值-0.5而言,它满足式(1),但其补码不满足式(3)。为便于硬件判断,规定:-0.5的补码不是规格化数。

? S=-1,[S]补=11.000?0。因小数补码允许表示-1,故-1视为规格化数。

规格化分为左规格化和右规格化两种: 1)左规格化

当尾数出现00.0×××?×或11.1×××?×时,需要进行左规格化。左规格化时,尾数左移一位,阶码减1。

2)左规格化

当尾数出现01.×××?×或10.×××?×时,在定点运算中表示溢出,但在浮点运算中不算溢出,可以通过右规格化处理。右规格化时,尾数右移一位,阶码加1。

37

计算机组成原理—存储器

【例】已知 x=0.1101×210,y=0.1011×201,求x+y 【解】 x、y在机器中以补码表示为: [x]补=00,10;00.1101 [y]补=00,01;00.1011 ① 对阶

[Δj]补=[jx]补-[jy]补=00,10+00,01=00,01 y尾数右移1位:[y]补=00,10;00.0101 ② 求和

[Sx+Sy]补=00.1101+00.0101=01.0010 即,[x+y]补=00,10;01.0010 ③ 规格化(右规)

[x+y]补=00,10;01.0010=00,11;00.1001 故 x+y=0.1101×211 4、舍入

在对阶和右规格化时,可能会将尾数的低位丢失,引起误差。 1)“0舍1入”法

尾数右移时,若移去部分的最高位为0,则舍去,若移去部分的最高位为1,则在右移后的末位加1(可能会因进位而引起再此规格化)。

2)“恒置1”法

尾数右移时,不论移去部分的最高位是1还是0,右移后的末位均置为1。

【例】 设x=2-101×(-0.101000),y=2-100×(+0.111011),并假设阶符取2位,阶码取3位,数符取2位,尾数取6位,求x-y。

【解】 [x]补=11,011;11.011000 [y]补=11,100;00.111011 ① 对阶

[Δj]补=[jx]补-[jy]补=11,011+00,100=11,111 即[Δj]补=-1,x的尾数右移1位,其阶码加1: [x]/补=11,100;11.001100 ② 求和

38

计算机组成原理—存储器

[SX]/补-[Sy]补=[SX]/补+[-Sy]补 =11.101100+11.000101 =10.110001 即[x-y]补=11.100;10.110001 ③ 右规格化

[x-y]补=11.101;11.0110001 ④ 舍入处理(采用0舍1入法)

11.011000 + 1 11.011001

[x-y]补=11.101;11.011001 5、溢出处理

对浮点数,尾数出现01.××?×或10.××?×时并不表示溢出。只有在规格化后,再根据阶码来判断结果是否溢出。

1)补码浮点数的表示范围

若机器数为补码,尾数为规格化形式,阶符取2位,阶码取7位,数符取2位,尾数取n位,浮点数的表示范围如下图:

上溢 A

对应 负浮点数 a 下溢 0

00,1111111;00.11?1

11,0000000;00.100?0

11,0000000;11.011?1

+127-128-127+127

b

对应 正浮点数 B 上溢 00,1111111;11.00?0

A 最小负数 2a 最大负数 2b 最小正数 2B 最大正数 2

×(-1) ×(-2-2) ×2 ×(1-2)

-n-1

-1

-n

2)补码浮点数的溢出判断

浮点数的溢出由阶码的符号决定: ? 阶码[j]补=01,××?×为上溢

39

计算机组成原理—存储器

? 阶码[j]补=10,××?×为上溢,按机器零处理 当阶符为“01”时,需做溢出处理。

上例中,[x-y]补=11.101;11.011001,阶符为11,没有溢出。

6.4.2 浮点乘除法

规则

? 两个浮点数相乘,其乘积的阶码为两乘数阶码之和,其乘积的尾数为两乘数尾数之积;

? 两个浮点数相除,商的阶码为被除数的阶码减去除数的阶码,商的尾数为被除数的尾数除以乘数的尾数。

设 x=Sx?rJx y=Sy?rJy 则 x?y=(Sx?Sy)?r(Jx+Jy) x/y=(Sx/Sy)?r(Jx-Jy) 1、阶码运算 1)用补码做运算

乘积的阶码为[jx]补+[jy]补,商的阶码为[jx]补-[jy]补。两个同号的阶码相加或两个异号阶码相减可能产生溢出,需作溢出判断。

2)用移码做运算 ① 运算规则

[jx]移=2n+jx -2n≤jx<2n(n为整数的位数) [jy]移=2n+jy -2n≤jy<2n(n为整数的位数) [jx]移+[jy]移=2n+jx+2n+jy =2n+(2n+jx+jy) =2n+[jx+jy]移 即用移码求阶码时,结果应减去2n

对于同一个真值,其补码与译码的数值部分完全相同,而符号位正好相反,即

[jy]移=2n+1+jy (mode 2n+1)

40

联系合同范文客服:xxxxx#qq.com(#替换为@)