计算机组成原理 第六章 计算机的运算方法 Part2 定点数与浮点数的规则 、详解浮点数及IEEE754标准

1.定点表示

小数点固定在某一位置为定点数
在定点机中,小数位置固定,当处理数不是纯小数或纯整数时,必须乘上一个比例因子,否则会“溢出”

较为简单的表述方法

2.浮点表示 

1.介绍

起因

  • 编程困难,程序员要调节小数点的位置
  • 数的表示范围小,为了能表示两个大小相差很大的数据,需要很长的机器字长;
  • 数据存储单元的利用率往往很低

 

范围 

 

 2.规格化

1.基数不同,浮点数规格化形式不同:
r = 2 尾数最高位为 1
r = 4 尾数最高 2 位不全为 0
r = 8 尾数最高 3 位不全为 0

2.基数 r 越大,可表示的浮点数的范围越大,浮点数的精度降低:
r = 2 左规 尾数左移 1 位,阶码减 1
右规 尾数右移 1 位,阶码加 1
r = 4 左规 尾数左移 2 位,阶码减 1
右规 尾数右移 2 位,阶码加 1
r = 8 左规 尾数左移 3 位,阶码减 1
右规 尾数右移 3 位,阶码加 1

2.对机器零的处理

  • 当浮点数尾数为 0 时,不论其阶码为何值按机器零处理
  • 当浮点数阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理

 

3.定点数和浮点数比较 

定点数和浮点数可从如下几个方面进行比较。
①当浮点机和定点机中数的位数相同时,浮点数的表示范围比定点数的大得多。
②当浮点数为规格化数时,其相对精度远比定点数高。
③浮点数运算要分阶码部分和尾数部分,而且运算结果都要求规格化,故浮点运算步骤比定点运算步骤多,运算速度比定点运算的低,运算线路比定点运算的复杂。
④在溢出的判断方法上,浮点数是对规格化数的阶码进行判断,而定点数是对数值本身进行上判断。例如,小数定点机中的数,其绝对值必须小于1,否则“溢出”,此时要求机器停止运算,进行处理。为了防止溢出,上机前必须选择比例因子,这个工作比较麻烦,给编程带来不便。而浮点数的表示范围远比定点数大,仅当“上溢”时机器才停止运算,故一般不必考虑比例因子的选择。
总之,浮点数在数的表示范围、数的精度、溢出处理和程序编程方面(不取比例因子)均优于定点数。但在运算规则、运算速度及硬件成本方面又不如定点数。因此,究竟选用定点数还是浮点数,应根据具体应用综合考虑。一般来说,通用的大型计算机大多采用浮点数,或同时采用定、浮点数;小型、微型及某些专用机、控制机则大多采用定点数。当需要作浮点运算时,可通过软件实现,也可外加浮点扩展硬件(如协处理器)来实现。

4.详解浮点数

一.浮点数简介

浮点数是与定点数相对的概念,计算机中的定点数约定小数点的位置不变,即人为约定俗成地规定了一个数小数点的位置。例如定点纯整数约定了小数点在数值位的最后。定点纯小数约定了数值位的最高位在小数点后面。

由于计算机字长的限制,当需要表示的数据有很大的数值范围时,他们不能直接用定点小数或者定点整数表示

二.浮点数的形式

浮点数由尾数M和阶码E构成。

上文已经介绍过,此处主要讲规则化后的浮点数

为了使有限字长的二进制尾数能表示更多的有效数位,同时使浮点数有统一的表示形式,浮点数通常采用规格化形式来表示。

规格化浮点数要求将尾数M的绝对值限定在规定的数值范围之内,即
1/2<=M<1

要使尾数的绝对值在此范围内,通过改变小数点的位置(相应地改变阶码)就可以做到。

说明:

若尾数M用补码表示,
则当M>=0时,规格化尾数的形式必须为:
[ M ] 补 = 0.1 X X X X X X X 
则当M< 0时,规格化尾数的形式必须为:
[ M ] 补 = 1.0 X X X X X X X

其中X为任意二进制值

  • 以上形式才是判断浮点数是否规格化的一般方法:看尾数补码的符号位与数值为最高位异或是否为1(即符号位与数值最高位不同)
  • 判断浮点数是否规格化的根本思想是:尾数数值位首位必须以有效位开头
  • 对于正数补码(原码)而言,有效位为1;对于负数补码而言,有效位为0
  • 基于以上判定准则,尾数-1(补码)是规格化形式;尾数-1/2(补码)不是规格化形式,注意不要与原码规格化判定的绝对值范围混淆
IEEE

单精度浮点数编码格式由三个字段构成:

  • 数符s为1位,表示浮点数的正负
  • 尾数编码f为23位(采用原码表示)
  • 阶码编码e为8位(含1位阶符,采用移码表示,偏移量127)
  • 其中需要注意的是:
    (1)IEEE 754中的阶码采用移码来表示,但对于单精度浮点数来说,移码的偏移量是127,这是因为IEEE 754将移码编码的全0和全1作为了特殊标识。

    (2)IEEE 754浮点数是规格化浮点数,为了能够更多地表示尾数的有效数位,规定尾数真值的整数部分必须为1,尾数编码时整数1隐去,小数部分f用原码表示。

对于阶码e全0和全1时的特殊含义:

  • (1)当阶码全0,且尾数f不全0时,表示该浮点数不是规格化浮点数,尾数实际为:
    0. X X X X X X X X ( 次 正 规 数 )而不是规定形式的:
    1. X X X X X X X X
  • (2)当阶码e全1,且尾数f全为0时,则该浮点数表示正无穷大或负无穷大,当数符s为1时,表示负无穷大,当数符s为0时,表示正无穷大。
  • (3)当阶码e全1,且尾数f不全为0时,则该浮点数表示非数值数据(NaN)。

简要说明双精度浮点数(与单精度浮点数相类似):

(1)阶码的真值E的取值范围为:-1022 ~ +1023,偏移量为+1023,阶码移码编码e为:
+1 ~ + 2046

(2)当e=0或e=2047时,在IEEE 754标准中表示特殊的数 

 浮点数的舍入规则
1、就近舍入
2、朝0舍入
3、朝正无穷舍入
4、朝负无穷舍入

5.举例

6. IEEE 浮点格式

Institute of Electrical and Electronics Engineers 电气电子工程师学会
IEEE 754标准
>1976年由Intel 发起,为了设计8087 协处理器
完成于1985年,如今几乎所有计算机都支持该格式>设计者William Kahan 获1989年度图灵奖
·面向数据分析
>很好地解决了舍入、上溢、下溢等问题>提高了科学计算软件的可移植性
硬件实现较为困难
>数据科学家逆袭硬件设计者,主导了本标准的制订

 

两种精度及其字段分配 

 

举例

 

 规格化部

非规格化部 

特殊数值部 

 缩小版 IEEE 754 示意

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值