1、计算机中数据的表示之关于浮点数
1.关于浮点数的问题
浮点数的一般格式:
格式(1) 格式(2)
注意:(1)一般浮点数尾数采用纯小数(隐含位为0)来表示,即尾数M与定点小数表示方法相同,由于尾数的符号位决定整个浮点数的符号,故有时采用格式(2)的形式;
(2)当尾数真值为0(不论阶码何值),或阶码的值比能在机器中表示的最小值还小,计算机把该浮点数看成零值,称为机器零,即浮点数表示不了真值绝对值很接近0的数,只能看成0处理;
(3)尾数通常用原码或补码
2、表示,阶码一般用移码或补码表示,如无特别说明,采用课本44页移码表示方法。
浮点数表示范围:
那么给定一浮点数的表示形式,包括符号、阶码、尾数各占位数及其采用哪种机器码表示,如求其能表示最大负数,转化为求这种表示形式的能表示的最大负尾数,最小阶码。
浮点数规格化表示:
为了提高数据的表示精度,当浮点数尾数的真值不为 0 时,满足条件,称为一般浮点数的规格化表示。如没特别说明,指的是一般的非规格化浮点数。注意规格化浮点数与一般浮点数一样,隐含位也是0,仅仅对尾数真值加上这一约束条件而已。对于不同码制,特征如下:
(1)尾数原码表示: (采用形式
3、1),按照尾数数值位为n位)
①尾数>0时,其尾数部分形式称为规格化
最大:尾数部分0111…11,真值为;
最小:尾数部分0100…00,真值为;
②尾数<0时,其尾数部分形式称为规格化
最大:尾数部分1100…00,真值为;
最小:尾数部分1111…11,真值为;
(2)尾数补码表示: (采用形式(1),按照尾数数值位为n位)
①尾数>0时,其尾数部分形式称为规格化
最大:尾数部分0111…11,真值为;
最小:尾数部分0100…00,真值为;
②尾数<0时,其尾数部分形式称为规格化
(注意:某些书上对此含糊其辞,参考清华(郑纬民:计算机系统结构
4、与上交大的书,以此为准!)
最大:尾数部分1011…11,真值为;
最小:尾数部分1000…00,真值为-1;
关于IEEE745浮点数:
表示形式
(1)IEEE754浮点数短浮点数和长浮点数尾数隐含位为1,临时浮点数没有隐含位,注意阶码的偏置值与一般浮点数不同,对于单精度和双精度数;短浮点数和长浮点数尾数采用隐含位为1称之为规格化的IEEE短浮点数与长浮点数(注意区别一般的规格化浮点数)。IEEE标准中也引入了非规格化浮点数,规定当浮点数的指数为允许的最小指数值时,尾数不必是规格化(Normalized)的。有了非规格浮点数,去掉了隐含的尾数位的制约,可以保存绝对值更小的
5、浮点数。
(2)机器零表示为全0;
(3)无限大数阶码全1,尾数全0,符号位指示正无穷或者负无穷。若阶码全1,尾数不全0,表示NaN(非数字)。
(4)由于(2)(3)原因,单精度数阶码部分不能使用11111111和00000000,双精度阶码不能使用11111111111和00000000000。
2.课本习题3-4解答
以下解答采用浮点数表示形式(1),注意本题目不是IEEE754的格式!!!!!指的是一般浮点数。
(1)根据浮点数的表示范围,实质上是找到最大正尾数、最大阶码的表示及其真值(没有特别指出指的是一般格式浮点数,不用考虑规格化)
阶码:移码(课本44-45页),
6、故全1时最大;尾数:补码
二进制表示为: 真值:
(2)实质上是找到最小负尾数、最大阶码(没有特别指出指的是一般格式浮点数,不用考虑规格化)
二进制表示为:真值:
(3)规格化需要特别注意其尾数的形式!!!尾数为补码,注意其正、负的表示形式
最大正数形式:真值:
最小正数形式:真值:
最大负数形式:真值:
最小负数形式:真值:
3.关于IEEE754标准表示范围的讨论(以短浮点数为例)
IEEE754标准的短浮点数采用偏置值为127的移码作为阶码,尾数采用原码表示,规格化的IEEE短浮点数有隐含位为1。(注意区别于一般的浮点数的特点)故规格化的IEEE短浮点数表示范围讨
7、论如下:
最大正数,考虑到阶码的取值限制,只能取00000001-11111110,故形式为
真值:
最小正数:真值:
最大负数:真值:
最小负数:真值:
另,当全0时,用来表示浮点0
关于规格化的IEEE长浮点数的范围,请大家自行推理研究。
上次考试原题:IEEE754标准规定32位浮点数格式中,符号位1位,阶码为8位,尾数为23位,则能表示的最大规格化正数为:
A. B. C. D.
4.更多>>
(1)数据表示这部分机器码中补码作为重点及难点,对于数据的表示,着重从其设计思想上理解,如果实在是不能够理解和推导出这几种机器码的表示方式及范围,只能记住了;对于求数值的机器数,比如负数的补码,可以采用公式,也可采用符号位为1,数值位取反末位加1去得到,反过来求机器数的真值道理亦然;
(2)浮点数这部分是难点,请大家仔细阅读本文,应该能区别开一般的作为理论研究的浮点数,一般的规格化浮点数以及在IEEE754标准下的浮点数之不同;
(3)关于数据表示的内容,课堂上只学到了最基本的,其实还有很多,比如按照某种要求设计一种浮点数,某种浮点数的表示方法的评价标准包括表数精度、表数效率、基值选择、格式设计等等,计算机系统结构学科关于这部分的内容很多很多,有兴趣同学可参考清华大学教授郑纬民编写的《计算机系统结构》一书。