美文网首页
浅谈IEEE754标准

浅谈IEEE754标准

作者: felixfeihu | 来源:发表于2017-03-23 19:02 被阅读0次

    首先说一说什么是IEEE754标准,IEEE 754 标准是IEEE二进位浮点数算术标准的标准编号,好吧,说了当白说。
    为什么我想谈一下这个标准呢?这还得从我今天遇到的一个问题开始。
    32位精度的float类型和64位精度的double类型能表示浮点数最大范围是多少?
    我想大多数同学都不知道吧。
    接下来我们就围绕这个问题来谈谈吧,首先IEEE754标准是使用最广泛的浮点数运算标准,为许多CPU与浮点运算器所采用,该标准定义了表示浮点数的格式。
    格式如下:
    一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M。
    1、符号位用1位表示,0表示正数,1表示负数;
    2、指数部分即使用所谓的偏正值形式表示(也就是移码),实际值为表示值与一个固定值(32位单精度的情况是127)的和。采用这种方式表示的目的是简化比较。因为,指数的值可能为正也可能为负,如果采用补码表示的话,全体符号位S和E自身的符号位将导致不能简单的进行大小比较。正因为如此,指数部分通常采用一个无符号的正数值存储。
    3、尾数部分采用原码表示,根据二进制的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。
    单精度浮点数(float)总共用32位来表示浮点数,其中尾数用23位存储,加上小数点前有一位隐藏的1,2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。考虑到第7位可能的四舍五入问题,所以单精度最少有6位有效数字(最小尺寸)。
    同样地:双精度浮点数(double)总共用64位来表示浮点数,其中尾数用52位存储, 2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位。同样四舍五入,最少15位。
    这下大家知道答案了吧。

    相关文章

      网友评论

          本文标题:浅谈IEEE754标准

          本文链接:https://www.haomeiwen.com/subject/nmutottx.html