您好,欢迎访问三七文档
计算机中数据的表示之关于浮点数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位11XXXXXXXXXXXXXXXXXX称为规格化最大:尾数部分1100…00,真值为12;最小:尾数部分1111…11,真值为(12)n;(2)尾数补码表示:(采用形式(1),按照尾数数值位为n位)esemsm阶码E尾数M阶码符号1位尾数符号1位k位n位esemsm阶码E尾数数值阶码符号1位尾数符号1位k位n位0负数区正数区下溢上溢上溢①尾数0时,其尾数部分形式尾数符号1位尾数数值n位01XXXXXXXXXXXXXXXXXX称为规格化最大:尾数部分0111…11,真值为12n;最小:尾数部分0100…00,真值为12;②尾数0时,其尾数部分形式尾数符号1位尾数数值n位10XXXXXXXXXXXXXXXXXX称为规格化(注意:某些书上对此含糊其辞,参考清华(郑纬民:计算机系统结构)与上交大的书,以此为准!)最大:尾数部分1011…11,真值为1(2)2n;最小:尾数部分1000…00,真值为-1;关于IEEE745浮点数:表示形式Emsm阶码尾数数值尾数符号1位原码表示移码表示数符(1)IEEE754浮点数短浮点数和长浮点数尾数隐含位为1,临时浮点数没有隐含位,注意阶码的偏置值与一般浮点数不同,对于单精度和双精度数(1)1.2smEm偏置值表示真值;短浮点数和长浮点数尾数采用隐含位为1称之为规格化的IEEE短浮点数与长浮点数(注意区别一般的规格化浮点数)。IEEE标准中也引入了非规格化浮点数,规定当浮点数的指数为允许的最小指数值时,尾数不必是规格化(Normalized)的。有了非规格浮点数,去掉了隐含的尾数位的制约,可以保存绝对值更小的浮点数。(2)机器零表示为全0;(3)无限大数阶码全1,尾数全0,符号位指示正无穷或者负无穷。若阶码全1,尾数不全0,表示NaN(非数字)。(4)由于(2)(3)原因,单精度数阶码部分不能使用11111111和00000000,双精度阶码不能使用11111111111和00000000000。2.课本习题3-4解答以下解答采用浮点数表示形式(1),注意本题目不是IEEE754的格式!!!!!指的是一般浮点数。(1)根据浮点数的表示范围,实质上是找到最大正尾数、最大阶码的表示及其真值(没有特别指出指的是一般格式浮点数,不用考虑规格化)阶码:移码(课本44-45页),故全1时最大;尾数:补码二进制表示为:01111111111111111111111111111111真值:23127(12)2(2)实质上是找到最小负尾数、最大阶码(没有特别指出指的是一般格式浮点数,不用考虑规格化)二进制表示为:10000000000000000000000011111111真值:1272(3)规格化需要特别注意其尾数的形式!!!尾数为补码,注意其正、负的表示形式最大正数形式:01111111111111111111111111111111真值:23127(12)2最小正数形式:01000000000000000000000000000000真值:128122最大负数形式:10111111111111111111111100000000真值:231281(2)22最小负数形式:10000000000000000000000011111111真值:12723.关于IEEE754标准表示范围的讨论(以短浮点数为例)IEEE754标准的短浮点数采用偏置值为127的移码作为阶码,尾数采用原码表示,规格化的IEEE短浮点数有隐含位为1。(注意区别于一般的浮点数的特点)故规格化的IEEE短浮点数表示范围讨论如下:最大正数,考虑到阶码的取值限制,只能取00000001-11111110,故形式为11111111111111111111111011111110真值:23127(22)2最小正数:00000000000000000000000000000001真值:1262最大负数:00000000000000000000000100000001真值:1262最小负数:11111111111111111111111111111110真值:23127(22)2另,当全0时,用来表示浮点0关于规格化的IEEE长浮点数的范围,请大家自行推理研究。上次考试原题:IEEE754标准规定32位浮点数格式中,符号位1位,阶码为8位,尾数为23位,则能表示的最大规格化正数为:A.23127(22)2B.23127(12)2C.23255(22)2D.12723224.更多(1)数据表示这部分机器码中补码作为重点及难点,对于数据的表示,着重从其设计思想上理解,如果实在是不能够理解和推导出这几种机器码的表示方式及范围,只能记住了;对于求数值的机器数,比如负数的补码,可以采用公式,也可采用符号位为1,数值位取反末位加1去得到,反过来求机器数的真值道理亦然;(2)浮点数这部分是难点,请大家仔细阅读本文,应该能区别开一般的作为理论研究的浮点数,一般的规格化浮点数以及在IEEE754标准下的浮点数之不同;(3)关于数据表示的内容,课堂上只学到了最基本的,其实还有很多,比如按照某种要求设计一种浮点数,某种浮点数的表示方法的评价标准包括表数精度、表数效率、基值选择、格式设计等等,计算机系统结构学科关于这部分的内容很多很多,有兴趣同学可参考清华大学教授郑纬民编写的《计算机系统结构》一书。
本文标题:浮点数表示方法总结
链接地址:https://www.777doc.com/doc-7029398 .html