美文网首页
IEEE 754 浮点类型表示

IEEE 754 浮点类型表示

作者: 苏小小北 | 来源:发表于2018-10-30 14:46 被阅读0次
    双十一要来了额

    1.前言


    看了很多IEEE 754,死脑筋,老是忘,这次就详细记下来,同时分享下浮点类型各种处理方式

    2.综述


    介绍IEEE 754之前,先说下科学计数法,这个应该都很熟悉。

    科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式(1≤a<10,n为整数),这种记数法叫做科学记数法。当我们要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间。

    例如:19971400000000=1.99714×10^13。计算器或电脑表达10的幂是一般是用E或e,也就是1.99714E13=19971400000000。

    类似的,IEEE 754 也是采用这种方式。
    计算机中数据均是按二进制的方式存储的,浮点数的存储也是如此。但是由于浮点数的特殊性(long的最大值为230584309213693951,才18位,表示小数的精度比较低。而浮点数大多小数部分比较长,有效数字比较长),无法采用整数的存储方式,浮点数需要有特定的存储方式。浮点数可以分为3个部分

    • sign(符号)1 位
    • exponent(指数)= exponent + bias float bias = 127 占8位, double bias=1023 占11位(保证指数一定是正数)
    • fraction(尾数)float 23位 double 52位
      例如:0.8125,对应二进制为
      (0.8125)_{10} = (0.1101)_2 = 1.101 * 2^{-3}

    p.s
    1.十进制整数转换为二进制整数:除2取余,逆序排列


    2.十进制小数转换为二进制小数:乘2取整,顺序排列


    参考https://www.cnblogs.com/xkfz007/articles/2590472.html

    那么1.101 * 2^{-3}的IEEE表示形式为:

    • sign:正数,为 0
    • exponent:指数,-3
    • fraction:尾数,101(默认首位的1省略,实际上为1101,公认第1位为1,所以省略)
      那么对应的float形式的二进制为:
      0 + 01111100 + 10100000000000000000000
      那么对应的double形式的二进制为:
      0 + 01111111110+ 1010000000000000000000000000000000000000000000000000
      float类型最大值为:
      8位指数,最大值为255,bias = 127,所以exponent的最大值为128,尾数最大值为1.11111111111111111111111_{(2)},小于2,所以
      MAX\_VALUE<2^{128}
      这里也就是为什么float只占用32位,表示的范围却比占用64位的long还要大。

    3.后言

    那么,float的最小值是多少呢?


    其他

    本人也是在慢慢学习中,如有错误还请原谅、敬请指出,谢谢!

    相关文章

      网友评论

          本文标题:IEEE 754 浮点类型表示

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