1、IEEE 754浮点存储格式:单精度(32位)、双精度(64位),举例说明。,班级: 姓名:学号:,IEEE754简介,IEEE标准从逻辑上用三元组S,E,M表示一个数 N,如下图所示:N的实际值n由下列式子表示:n= (-1)s * m *2e n,s,e,m分别为N,S,E,N二进制位对应的实际数值。 S(sign)表示N的符号位。对应值s满足:n0时,s=0;n0时,s=1。 E(exponent)表示N的指数位,位于S和M之间的若干二进制位。对应的e值可正可负。 M表示N的尾数位,恰好位于N的末尾。,一、浮点数的格式,这里介绍IEEE标准754规定的两种浮点数格式:单精度和双精度。 单
2、精度:N共32位,其中S占1位,E占8位,M站23位。双精度:N共64位,其中S占1位,E占11位,M占52位。,31,30,23,22,0,63,62,52,51,0,二、IEEE754有五种类型浮点数据,1、规格化数:此时e被解释为表示偏置形式的整数,e值计算公式为:e=E表示的整数值-biasbias=2k-1-1 (k表示E的位数,对单精度来说k=8,则bias=127;对双精度来说,k=11,则bias=1023) 此时m的计算公式:m=1.M表示的数值(754标准规定此时小数点左侧的隐含位为1,。如M=101,则1.M=1.101表示的数值为1.625,m=1.625),二、IEE
3、E754有五种类型浮点数据,2、非规格化数:当E的二进制位全部为0时,N为非规格化数。此时e,m的计算公式:e=1-biasm=0.M这个二进制位表示的数字3、特殊数值:当E的二进制位全为1时为特殊数值。此时若M的二进制位全为0,则n表示无穷大(看S位1还是0,从而表示负无穷大和无穷大);若M的二进制位不全为0,表示不是一个合法实数或者无穷。,三、十进制数转换成浮点数的步骤,1、将十进制数转换成二进制数; 2、规格化二进制数:改变阶码,使小数点前面仅有第一位有效数字; 3、计算阶码:单精度浮点数的阶码加上偏移量127,7FH(01111111B)双精度浮点数的阶码加上偏移量,1023,3FFH
4、(001111111111B) 4、以浮点数据格式存储。,四、浮点数转换成十进制数的步骤,1、分割浮点数的符号(S)、阶码(E)和有效数字位(M); 2、将偏移阶码减去偏移,得到真正的阶码e; 3、把数字写成规格化的二进制形式; 4、把规格化的二进制数改写成非规格化的二进制数; 5、把非规格化的二进制数转换成十进制数,例1、把十进制数12.5转换成处理器中的浮点数,解:1、进制转换:(12.5)10=(1100.1)22、规格化: (1100.1)2=1.1001*23=1.1001*2113、计算阶码E:11+01111111=100000104、则数值的符号位S=0 ;阶码E为:10000
5、010, 尾数M为:1001 0000 0000 0000 0000 000 综上十进制12.5的浮点形式为: 0 10000010 10010000000000000000000,例2、把浮点数11000001110010010000000000000000,解:1、符号位:1;阶码位E:10000011; 尾数:1001 0010 0000 0000 0000 0002、还原阶码位:e=E-bias=131-127=43、写出浮点数的规格化形式:1.1001001*24 (其中前面的1.是因为规格化数的隐含位而来) 4、该浮点数的非规格化形式:11001.0015、转化为十进制数为-25.125,例3、把十进制数12.5转换成处理器中的双精度浮点数,解:1、进制转换:(12.5)10=(1100.1)22、规格化: (1100.1)2=1.1001*23=1.1001*2113、计算阶码E:11+01111111111=100000000104、则数值的符号位S=0 ;阶码E为:10000000010, 尾数M为:1001 0000 此处省略44个0 综上十进制12.5的双精度浮点形式为: 0 10000000010 10010000.,谢谢!,