zoukankan      html  css  js  c++  java
  • IEEE浮点数表示

    IEEE标准中浮点数用形如left ( -1 
ight )^{s}*M*2^{E}的格式表示一个小数:

    • s(符号位),s=1代表负数,s=0代表正数。
    • M(尾数),代表小数点之后的数。
    • E(阶数),对刚才的小数进行加权,权重是2的E次幂。

    位表示

    所以整个浮点数的二进制表示形式由3个部分组成:1位的符号段(s)+ k位的阶码段 + n位的小数字段。
    说明:在32位单精度表示中,k=8, n=23;在64位双精度表示中,k=11, n=52;

     
    6217760-ac414030a911355e.jpg
     

    类别

    根据阶码段的值,浮点数可以分为3种不同的情况:

     
    6217760-eec7089fb268036e.jpg
     

    1.规格化的值

    1.1阶码E

    这是最普遍的,就是阶码段即非全0,也非全1。此时阶码字段被解读为以偏置(biased)形式表示的有符号整数,即E = e - Bias。此处的e代表阶码段的无符号二进制数,而Bias = 2^{k-1} - 1(单精度是127,双精度是1023)。

    1.2尾数M

    此处尾数定义为M = 1 + f,f表示小数字段。此处隐含以1开头的尾数表示,因此我们可以把M看成一个二进制表达式为1.******的数字。

    2.非规格化的值

    2.1阶码E

    当阶码段全为0时,所表示的就是非规格化的数字。此时,不同于规格化形式,阶码值E = 1 - Bias,而Bias仍然为2^{k-} - 1

    2.2尾数M

    不同于规格化形式,尾数M = f,这就是小数字段不包含隐含的1了。
    非规格化的数一般用来表示那些非常接近于0的小数。而且也可以用来表示0,即阶码段和小数段全为0。

    3.特殊的值

    3.1无穷大的值

    当阶码段全为1,且小数段全为0时,得到的值表示无穷大,当符号段为1代表负无穷,符号段为0代表正无穷。一般用在表示两个很大的数相乘,结果溢出或零除时。

    3.2不是值(NaN)

    当阶码段全为1,且小数段非全0时,结果被称为NaN(Not a Number),一般表示一些非法运算。如对负数开根号或无穷数的相互运算时。

    3.数字示例

    下图表示了8位浮点格式的非负值,且符号段占1位,阶码段占4位,小数段3位,偏置量Bias为2^{3} -1=7

     
    6217760-7416f7a9bb33885c.jpg
     

    想要获取更多详情,请点击关注:

    嵌入式Linux&ARM 

    CSDN博客

    简书博客

  • 相关阅读:
    @SuppressWarnings("resource")
    连续根据两个字段排序
    java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
    java中数组的定义
    单表(多表需手动创建多个转换)插入,更新数据
    批量处理sql
    查询排序后前5名的信息
    面向对象详细
    Flask-SQLAlchemy
    Dbutils-数据库连接池
  • 原文地址:https://www.cnblogs.com/leon1124/p/14039697.html
Copyright © 2011-2022 走看看