西门子实数类型介绍
为了适应IBM System/370的影响,IEEE在1987年推出了底数无关的二进制浮点运算标准IEEE 854,同样在那一年被美国引用作为ANSI标准。1989年,国际标准组织IEC采纳了IEEE 754/854标准,并在修订后将其编号为IEC 60559。现在,几乎所有浮点处理器完全或基本支持这个标准,C99浮点运算也遵循这一标准。
IEEE浮点数标准通过逻辑上用三元组{S,E,M}表示一个数V,即V=(1)S×M×2E,对数的表示形式进行编码,其中符号位S决定了数字的正负,有效数字位M是一个二进制小数,指数位E是用于对浮点数加权的2的幂(可能是负数)。IEEE 754的浮点数由符号位、指数段和小数段三部分组成,指数段表示负指数通过偏置形式解释的有符号整数E=eBias,其中e是无符号数,而Bias等于2k11(对于单精度为127,双精度为1023)。有效数字M表示为1+f,其中f为描述小数值。当指数值在126至+127(单精度)或1022至+1023(双精度)时,可以利用这种表示方式轻松获得额外的精度位,同时省略第一位1的显式表示。
举例说明将实数9.625表示为单精度浮点数格式的步骤:首先将9.625转换为二进制形式为1001.101,然后转换为标准浮点数形式为1.001101×2^3,因为9.625是负数,因此符号位s等于1;指数为3,加上偏置127后为130,即二进制10000010;去掉小数点左侧的1并在右侧填0作为小数部分。在十六进制表示中,最终结果为0xC11A0000。
以实数5865.236为例,整数部分连同小数部分转换为二进制,用科学计数法表达,指数部分表示为12,并在加上偏置127后为139,对应的二进制表示为10001011;小数部分即转换后的后23位二进制数字。最终,用标准符号、指数和小数表示方式,其二进制表示为:符号位0、指数部分10001011和小数部分01101110100100111100011。