IEEE754浮点标准学习

概念

  • 定点数: 小数点位置事先已有约定,不可再改变。
  • 浮点数: 小数点位置可以改变。
  • 定点整数:小数点位置约定在最低数值位的后面。
  • 定点小数:小数点位置约定在最高数值位的前面。

科学计数法表示

如,123.45 = 1.2345*10^2,其中,
尾数:1.2345(有效数字)
基数:10
指数:2

规范化浮点数表示形式

+-d.dd…d*β^e,(0<=d<β)
尾数中数字的个数称为精度,每个数字d介于0和基数之间。小数点左侧数字不为0。

单精度与双精度存储格式及说明

  • 符号域:

    0表示正数,1表示负数。

  • 指数域:

    对于单精度为8位,双精度为11位。8位指数可以表示0-255。考虑到正负指数,实际的指数值
    按要求需要加上一个偏差值(Bias)作为保存在指数域中的值,对于单精度来说,该偏差值为127,
    而双精度则为1023。因此,单精度的某个变量实际指数值0则存储在内存中的指数域中,其值为
    127。而保存在指数域中的64则表示实际的指数值-63。由于偏差的引入,对于实际的单精度可
    表示的指数值的范围就变为了-127到128之间。而-127(全0)和128(全1)一般保留用作特殊值的
    处理。因此,最终实际可用表达的有效指数范围就在-126(emin)到127之间(emax)(包含两端)。

  • 尾数域:

    单精度为23位,双精度为52位。除却某些特殊情况,IEEE标准要求浮点数必须是规范的。这意
    味着尾数的小数点左侧必须为1,因此我们在保存尾数的时候,可以忽略小数点前面的1,从而
    多腾出一位来保存更多的尾数。这样我们实际上用23位长的尾数域表达出了24位的尾数。
    举例:对于单精度的9.625(dec),转化为二进制浮点数为1001.101,其规范化二进制浮点数表示
    形式为1.001101x2^3,实际保存在尾数域中的值为0011 0100 0000 000 0000 0000,
    去掉小数点左侧的1,并在右侧用0补齐。

  • 表示范围:

    对于单精度数,可以表达的最大指数值为2^24-1 = 16777215。由于16777216是偶数,可以
    通过除以2,然后调整指数的方式来保存,因此16777216可以被精确保存。因而,单精度的
    有效数字不高于8位。转化过程,16777215.0(dec)=111111111111111111111111.0(bin)
    调整成规范化形式,1.11111111111111111111111(bin),尾数域全部被占满。

  • 不能精确表示时,舍入的标准

    当遇到不能准确表示的数值时,必须向最接近的可保存的值进行舍入。当需要舍入的值刚好是
    一半时,在前后两个等距接近的可保存的值中,取最后一位有效数字为0者。
    举例:16777216的二进制浮点数表示为1.00000000000000000000000
    16777218的二进制浮点数表示为1.00000000000000000000001,则16777217的二进制浮点数表示
    应舍入为1.000000000000000000000000。

你可能感兴趣的:(基础知识)