浮点数表示方法总结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.关于浮点数的问题 浮点数的一般格式:

格式(1) 格式(2)

注意:(1)一般浮点数尾数采用纯小数(隐含位为0)来表示,即尾数M 与定点小数表示方法相同,由于

尾数的符号位决定整个浮点数的符号,故有时采用格式(2)的形式;

(2)当尾数真值为0(不论阶码何值),或阶码的值比能在机器中表示的最小值还小,计算机把该浮

点数看成零值,称为机器零,即浮点数表示不了真值绝对值很接近0的数,只能看成0处理; (3)尾数通常用原码或补码表示,阶码一般用移码或补码表示,如无特别说明,采用课本44页移

码表示方法。

浮点数表示范围:

⨯最大阶码

最大正数=最大正尾数2

⨯最小阶码最小正数=最小正尾数2

⨯最小阶码

最大负数=最大负尾数2

⨯最大阶码最小负数=最小负尾数2

那么给定一浮点数的表示形式,包括符号、阶码、尾数各占位数及其采用哪种机器码表示,如求其能表示最大负数,转化为求这种表示形式的能表示的最大负尾数,最小阶码。 浮点数规格化表示:

为了提高数据的表示精度,当浮点数尾数的真值不为 0 时,满足条件112≤≤尾数真值,称为一般

浮点数的规格化表示。如没特别说明,指的是一般的非规格化浮点数。注意规格化浮点数与一般浮点数一样,隐含位也是0,仅仅对尾数真值加上这一约束条件而已。对于不同码制,特征如下: (1)尾数原码表示: (采用形式(1),按照尾数数值位为n 位)

①尾数>0时,其尾数部分形式尾数符号

1位

尾数数值n 位

01XXXXXXXXXXXXXXXXXX

称为规格化

最大:尾数部分0111…11,真值为12n

--;

最小:尾数部分0100…00,真值为

12

; ②尾数<0时,其尾数部分形式尾数符号1位

尾数数值n 位

1

1XXXXXXXXXXXXXXXXXX

称为规格化

最大:尾数部分1100…00,真值为12

-

; 最小:尾数部分1111…11,真值为(12)n

---;

阶码符号尾数符号

数值

阶码符号

尾数符号0

(2)尾数补码表示:(采用形式(1),按照尾数数值位为n位)

①尾数>0时,其尾数部分形式尾数符号

1位

尾数数值n位

01XXXXXXXXXXXXXXXXXX称为规格化

最大:尾数部分0111…11,真值为12n-

-;

最小:尾数部分0100…00,真值为1 2

②尾数<0时,其尾数部分形式尾数符号

1位

尾数数值n位

10XXXXXXXXXXXXXXXXXX称为规格化

(注意:某些书上对此含糊其辞,参考清华(郑纬民:计算机系统结构)与上交大的书,以此为准!)

最大:尾数部分1011…11,真值为

1

(2) 2

n

-

-+;

最小:尾数部分1000…00,真值为-1;关于IEEE745浮点数:

表示形式

数值1位

(1)IEEE754浮点数短浮点数和长浮点数尾数隐含位为1,临时浮点数没有隐含位,注意阶码的偏置值与

一般浮点数不同,对于单精度和双精度数

(1) 1.2

s

m E

m-

=-⨯⨯偏置值表示真值

短浮点数和长浮点数尾数采用隐含位为1称之为规格化的IEEE短浮点数与长浮点数(注意区别一般的规格化浮点数)。IEEE标准中也引入了非规格化浮点数,规定当浮点数的指数为允许的最小指数值时,尾数不必是规格化(Normalized)的。有了非规格浮点数,去掉了隐含的尾数位的制约,可以保存绝对值更小的浮点数。

(2)机器零表示为全0;

(3)无限大数阶码全1,尾数全0,符号位指示正无穷或者负无穷。若阶码全1,尾数不全0,表示NaN (非数字)。

(4)由于(2)(3)原因,单精度数阶码部分不能使用和00000000,双精度阶码不能使用和00000000000。

2.课本习题3-4解答

以下解答采用浮点数表示形式(1),注意本题目不是IEEE754的格式!!!!!指的是一般浮点数。

(1)根据浮点数的表示范围,实质上是找到最大正尾数、最大阶码的表示及其真值(没有特别指出指的是一般格式浮点数,不用考虑规格化)

阶码:移码(课本44-45页),故全1时最大;尾数:补码

二进制表示为:

011111111111111111111111

11111111

真值:23127

(12)2

-

-

(2)实质上是找到最小负尾数、最大阶码(没有特别指出指的是一般格式浮点数,不用考虑规格化)

二进制表示为:

100000000000000000000000

11111111

真值:127

2-

(3)规格化需要特别注意其尾数的形式!!!尾数为补码,注意其正、负的表示形式

最大正数形式:

01111111111111111111111111111111真值:23127(12)2-- 最小正数形式:

01000000000000000000000000000000真值:128122

-

最大负数形式:

10111111111111111111111100000000真值:231281(2)22

---+

最小负数形式:

10000000000000000000000011111111真值:1272-

3.关于IEEE754标准表示范围的讨论(以短浮点数为例)

IEEE754标准的短浮点数采用偏置值为127的移码作为阶码,尾数采用原码表示,规格化的IEEE 短浮点数有隐含位为1。(注意区别于一般的浮点数的特点)故规格化的IEEE 短浮点数表示范围讨论如下: 最大正数,考虑到阶码的取值限制,只能取00000,故形式为

11111111111111111111111011111110真值:23127(22)2-- 最小正数:00000000000000000000000000000001真值:1262- 最大负数:

00000000000000000000000100000001真值:1262--

最小负数:

11111111111111111111111111111110真值:23127(22)2---

另,当全0时,用来表示浮点0

关于规格化的IEEE 长浮点数的范围,请大家自行推理研究。

上次考试原题:IEEE754标准规定32位浮点数格式中,符号位1位,阶码为8位,尾数为23位,则能表示的最大规格化正数为: A.23

127(22)2-++-⨯ B.23127(12)2-++-⨯ C.23255(22)2-++-⨯ D.1272322+-

4.更多>>

(1)数据表示这部分机器码中补码作为重点及难点,对于数据的表示,着重从其设计思想上理解,如果实在是不能够理解和推导出这几种机器码的表示方式及范围,只能记住了;对于求数值的机器数,比如负数的补码,可以采用公式,也可采用符号位为1,数值位取反末位加1去得到,反过来求机器数的真值道理亦然;

(2)浮点数这部分是难点,请大家仔细阅读本文,应该能区别开一般的作为理论研究的浮点数,一般的规格化浮点数以及在IEEE754标准下的浮点数之不同;

(3)关于数据表示的内容,课堂上只学到了最基本的,其实还有很多,比如按照某种要求设计一种浮点数,某种浮点数的表示方法的评价标准包括表数精度、表数效率、基值选择、格式设计等等,计算机系统结构学科关于这部分的内容很多很多,有兴趣同学可参考清华大学教授郑纬民编写的《计算机系统结构》一书。

相关文档
最新文档