zoukankan      html  css  js  c++  java
  • 计算机底层中的IEEE浮点数表示

    IEEE标准中浮点数用形如V = (-1)s x M x 2E的格式表示一个小数:
    s☞符号位,s=1代表负数,s=0代表正数。
    M☞尾数,代表小数点之后的数。
    E☞阶数,对刚才的小数进行加权,权重是2的E次幂。

    位表示

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

    类别

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

    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) -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为23 - 1 =7。

    更多知识:
    ***点击关注专题:***嵌入式Linux&ARM
    ***点击关注CSDN专题:***Leon_Geo的博客
    ***或浏览器打开:***https://www.jianshu.com/c/42d33cadb1c1

    ps://www.jianshu.com/c/42d33cadb1c1

  • 相关阅读:
    USACO 4.1 Fence Rails
    POJ 1742
    LA 2031
    uva 10564
    poj 3686
    LA 3350
    asp.net MVC 3多语言方案--再次写, 配源码
    使用Log4net记录日志
    在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
    为什么要使用反射机制
  • 原文地址:https://www.cnblogs.com/leon1124/p/14039691.html
Copyright © 2011-2022 走看看