计算机组成原理中尾数,计算机组成原理

第二节 数的定点表示和浮点表示

在计算机中,小数点不用专门的器件表示,而是按约定的方式标出。共有两种方法来表示小数点的存在,即定点表示和浮点表示。定点表示的数称为定点数,浮点表示的数称为浮点数。

一、定点表示

小数点固定在某一位置的数为定点数,有以下两种格式。

14549d7552500b9742dd00fed7d8a943.png

当小数点位于数符和第一数值位之间时,机器内的数为纯小数;当小数点位于数值位之后时,机器内的数为纯整数。采用定点数的机器叫做定点机。数值部分的位数n决定了定点机中数的表示范围。若机器数采用原码,小数定点机中数的表示范围是-(1-2-n)~(1-2-n),整数定点机中数的表示范围是-(2n-1)~(2n-1)。

在定点机中,由于小数点的位置固定不变,故当机器处理的数不是纯小数或纯整数时,必须乘上一个比例因子,否则会产生“溢出”。

二、浮点表示

实际上计算机中处理的数不一定是纯小数或纯整数(如圆周率3.1416),而且有些数据的数值范围相差很大(电子的质量9×10-28克,太阳的质量2×1033克),它们都不能直接用定点小数或定点整数表示,但均可用浮点数表示。浮点数即小数点的位置可以浮动的数,如

352.47=3.5247×102

=3524.7×10-1

=0.35247×103

显然,这里小数点的位置是变化的,但因为分别乘上了不同的10的方幂,故值不变。

通常,浮点数被表示成

N=S×rj

式中S为尾数(可正可负),j为阶码(可正可负),r是基数(或基值)。在计算机中,基数可取2、4、8或16等。

以基数r=2为例,数N可写成下列不同形式:

N=11.0101

=0.110101×210

=1.10101×21

=1101.01×2-10

=0.00110101×2100

为了提高数据精度以及便于浮点数的比较,在计算机中规定浮点数的尾数用纯小数形式,故上例中0.110101×210和0.00110101×2100形式是可以采用的。此外,将尾数最高位为1的浮点数称作规格化数,即0.110101×210为浮点数的规格化形式。浮点数表示成规格化形式后,其精度最高。

1.浮点数的表示形式

浮点数在机器中的形式如下所示。采用这种数据格式的机器叫做浮点机。

b25c7b5b93816248bbc55d2b7f7a7096.png

可见浮点数由阶码j和尾数S两部分组成。阶码是整数,阶符和阶码的位数m合起来反映浮点数的表示范围及小数点的实际位置;尾数是小数,其位数n反映了浮点数的精度;尾数的符号Sf代表浮点数的正负。

2.浮点数的表示范围

以通式N= S×rj为例,设浮点数阶码的数值位取m位,尾数的数值位取n位,当浮点数为非规格化数时,它在数轴上的表示范围如下所示。

99b0d6523927b0f54a5b8d7387b16d12.png

由图可见,其最大正数为0089aa48ba692f3e1816eac84f137cc4.gif

;最小正数为80730cdae9982169cdb96e50438677bd.gif

;最大负数为7165939effa544260a17315bcaf887d0.gif

;最小负数为f58fc8114e084360515d6f46a8e4208a.gif

。当浮点数阶码大于最大阶码时,称为“上溢”,此时机器停止运算,进行中断溢出处理;当浮点数阶码小于最小阶码时,称为“下溢”,此时“溢出”的数绝对值很小,通常将尾数各位强置为零,按机器零处理,此时机器可以继续运行。

一旦浮点数的位数确定后,合理分配阶码和尾数的位数,直接影响浮点数的表示范围和精度。通常对于短实数(总位数为32位),阶码取8位(含阶符1位),尾数取24位(含数符1位);对于长实数(总位数为64位),阶码取11位(含阶符1位),尾数取53位(含数符1位);对于临时实数(总位数为80),阶码取15位(含阶符1位),尾数取65位(含数符1位)。

3.浮点数的规格化

为了提高浮点数的精度,其尾数必须为规格化数。如果不是规格化数,就要通过修改阶码并同时左右移尾数的办法,使其变成规格化数。将非规格化数转换成规格化数的过程叫做规格化。对于基数不同的浮点数,因其规格化数的形式不同,规格化过程也不同。

  当基数为2时,尾数最高位为1的数为规格化数。规格化时,尾数左移一位,阶码减1,(这种规格化叫做向左规格化,简称左规);尾数右移一位,阶码加1(这种规格化叫做向右规格化,简称右规)。浮点数规格化后,其最大正数为7bdac85dcabfe6e9d484c1d5b2f751fd.gif

;最小正数为3f7e60572d80b90c07e27f5abd9fc94a.gif

;最大负数为477c4edd4783d4db58f2e9a3d7bd6fa5.gif

;最小负数为876fff220bb38cba16e075bb1acfd481.gif

当基数为4时,尾数的最高两位不全为零的数为规格化数。规格化时,尾数左移两位,阶码减1;尾数右移两位,阶码加1。

当基数为8时,尾数的最高三位不全为零的数为规格化数。规格化时,尾数左移三位,阶码减1;尾数右移三位,阶码加1。

同理类推,不难得到基数为16或2n时的规格化过程。

浮点机中一旦基数确定启就不再变了,而且基数是隐含的,故不同基数的浮点数其表示形式完全相同。但基数不同,对数的表示范围和精度等都受影响。一般来说,基数r越大,可表示的浮点数范围越宽,而且所表示的数其个数越多。但r越大,浮点数的精度反而下降。如r=16的浮点数,因其规格化数的尾数最高三位可能出现零,故与其尾舞位数相同的r=2的浮点数相比,后者可能比俞者多三位精度。

三、定点数和浮点数的比较

定点数和浮点数可从如下几个方面进行比较:

(1)当浮点机和定点机中的数其位数相同时,浮点数的表示范围比定点数大得多。

(2)当浮点数为规格化数财,其精度远比定点数高。

(3)浮点数运算要分阶码部分和尾数部分,而且运算结果都要求规格化,故浮点运算步骤比定点运算步骤多,运算速度比定点低,运算线路比定点复杂。

(4)在溢出的判断方法上,浮点数是对规格化数的阶码进行判断,而定点数是对数值本身进行判断。如小数定点机中的数其绝对值必须小于1,否则即“溢出”,此时要求机器停止运算,进行处理。为了防止溢出,上机前必须选择比例因子,这个工作比较麻烦,给编程带来不便。而浮点数的表示范围远比定点数大,仅当“上溢”时机器才停止运算,故一般不必考虑比例因子的选择。

总之,浮点数在数的表示范围、数的精度、溢出处理和程序编程方面(不取比例因子)均优于定点数。但在运算规则、运算速度及硬件成本方面又不如定点数。因此,究竟选用定点数还是浮点数,应根据具体应用综合考虑。一般来说,通用的大型计算机大多采用浮点数,或同时采用定、浮点数;小型、微型及某些专用机、控制机则大多采用定点数。当需要作浮点运算时,可通过软件实现,也可外加浮点扩展硬件(如协处理器)来实现。

四、举例

例:将十进制数+13/128写成二进制定点数和浮点数(数值部分取10位,阶码部分取4位,阶符和数符各取1位),分别写出它在定点机和浮点机中的机器数形式。

解:令x=+13/128

其二进制形式:x=0.0001101000

定点数形式:x=0.0001101000

浮点数规格化表示:x=0.1101000000×2-11

定点机中 [x]原=[x]补=[x]反=0.0001101000

浮点机中 [x]原:1,0011;0.1101000000

[x]补:1,1101;0.1101000000

五、IEEE754标准

在IEE754浮点数标准中,定义的浮点数的格式如下表所示。其中浮点数编码有32位、64位和80位三种格式,分别称为短实数、长实数和临时实数,短实数和长实数又分别称为单精度数和双精度数。

浮点数

符号位

阶码

尾数

总位数

短实数

长实数

临时实数

1

1

1

8

11

25

23

52

64

32

64

80

在IEE754浮点数标准中,符号位s仍然用0表示正数,用1表示负数。正常数的阶码取值e的范围为1~254,尾数部分可以取任意的二进制数值f。这样,单精度数所表示的数值为:

5606a9baa82f753d9faab995e8bcba26.gif

从中我们可以发现,IEEE 754标准将一般规格化数中位于小数点后的1移到了小数点前,而且不需要用编码表示,只是在数值转换时在公式中加上这个1。另外,阶码代表的值需要减去127,而不是128,这也与一般移码略有不同。IEEE

754双精度数的阶码取值范围为1~2046,代码所表示的数值为:

73208511a1ca579642fe482d9fccea04.gif

例:将十进制数-0.75表示成单精度的IEEE 754标准代码。

解:-0.75可表示成-3/4。即二进制的-0.11。在浮点表示法中为

-0.11×20

在IEEE 754标准中规格化数的表示法为

-1.1×2-1

根据IEE754的单精度表示公式

433e744839c130177d4907452832ffe6.gif

这个数可表示为

(-1)1×(1+0.1000 0000 0000 0000 0000 000)×2-1

=(-1)1×(1+0.1000 0000 0000 0000 0000 000)×2126-127

l 01111110 10000000000000000000000

例:将如下IEEE 754单精度浮点数用十进制数表示:

1 1000000l 010000000000000000000000

解:符号位s=1,阶码部分值e=129,尾数部分f=1/4=0.25,根据IEEE754标准的表示公式

(-1)1×(1+0.25)×2129-127

=-l×1.25×22

=-1.25×4

=-5.0

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值