• 浮点数


    1、构成:

    符号位、尾数、基数、指数

     

    2、浮点数二进制表示

    基数为2,只保留符号位(s)、尾数(m)、指数(e):

     

    3、浮点数格式:

    单精度、双精度和扩展精度。

    单精度浮点数为32位:

    对应于C语言中的float,其中包含一位符号位S,8位指数位E和23位尾数位M,尽管M有23位,但他表示小数点之后的二进制小数,例如M为0110,其实是0.0110,这时因为标准规定小数点左边还有一个隐含位.(此处有一个点.),从而尾数值可能是0.0110,也可能是1.0110。E关系到规格化和非规格化。

     

    双精度浮点数为64位:

    对应于C语言中的double。

    4、规格化

    当指数位E表示的二进制序列不全0也不全1时,该浮点数为规格化形式。此时,指数位对应的实际值e被解释为表示偏置(bias)形式的整数,相应的计算公式为:

     

    | E |表示E的二进制序列表示的整数值;bias为偏移量;k为指数位宽度,对于单精度而言,k=8,故bias=127,E=10000001(binary)时,| E |=129(decimal),所以e=129-127=2。

    对于规格化浮点数,IEEE—754标准规定尾数位小数点左侧的隐含位位1,此时m的计算公式为:

    m=| 1.M |

    M=“1001000….0”,1.M=1.1001000…0,带入上式得到 m=1+2^(-1)+2^(-4)=1.5625。

    所以:

    n=(-1)^(0) x (1.5625)^(2)= 2.44140625

    5、单精度规格化浮点数特点

    (1)、由于E表示的二进制序列几部全为0也不全为1,所以E的表示范围为0~255.

    (2)、尾数m的最小值为1,对应的M全为0,最大值为2-2^(-23)

    (3)、规格化浮点数能表示的数绝对值最大值为(2-2^(-23))x 2^(127)。

    单精度规格化浮点数计算公式为:

    6、非规格化

    当E的二进制位全部为0时,该浮点数为非规格化形式。指数位e和m为:

     

    单精度非规格化浮点数计算公式为:

     

  • 相关阅读:
    Spring JDBC
    获取JNDI数据源
    subset II
    hadoop-0.20.2安装配置
    leetcode5:subsets问题
    leetcode4:Permutation
    leetCode3
    leetcode2:线性表
    leetcode1:线性表
    使用C++11 开发一个半同步半异步线程池
  • 原文地址:https://www.cnblogs.com/luxinshuo/p/13554087.html
Copyright © 2020-2023  润新知