跳转至

浮点数

浮点表示对形如V=x×2y的有理数进行编码

二进制小数

\(d=i=nm10i×di\) - 与二进制整数的计算方式相同 - 整数部分:小数点左边的数字的权是10的正幂次 - 小数部分:小数点右边的数字的权是10的负幂次 - 对于这种表示方法,增加二进制表示的长度可以提高表示的精度

IEEE浮点表示

\(V=(1)s×M×2E\) - 一个浮点数的组成与其编码方式: - 符号(Sign)s决定数的正负 - 1位符号位 - 尾数(Significand)M是一个二进制小数,其范围是12ε01ε - n位小数字段编码Mfrac=fn1f1f0 - 阶码(Exponent)E的作用是对浮点数加权,其权重是eE次幂 - k位阶码字段编码Eexp=ek1e1e0 - 根据exp的值,被编码的值可以分为三种不同的情况 1. 规格化的值: - 最普遍的情况:exp不全为10 - 阶码的值E=eBias - 此时阶码字段被解释为以偏置形式表示的有符号整数 - Bias=2k11 - 单精度的情况下为127 - 双精度的情况下为1023 - 尾数的值M=1+f=1.fn1...f1f0 - 小数字段frac被解释为描述小数值f=0.fn1...f1f0 - 这种方式也被称为隐含的以1开头表示 2. 非规格化的值 - 阶码域全部为0 - 阶码值:E=1Bias - 这样偏置值的设置可以使非规格化值平滑的转换到规格化值 - 尾数值:M=f - 用途: - 提供了一种表示数值0的方法 - 因为在规格化表示中,有M1 - 根据符号位的不同,有0+0 - 方便的表示接近于0的数 3. 特殊值:

[!具体分类] - 规格化的: - 非规格化的: - 无穷大: - NaN(Not a Number):

数字示例

  • 一个6位格式:k=3n=2
  • 一个8位浮点数的表示:k=4n=3

舍入

- 向偶数舍入的方式:将数字向上或向下舍入,使结果的最低有效数字是偶数

[!向偶数舍入] 在计算一组数的平均值时,使用向上或向下舍入的方式,会使计算一组数的平均值偏高或偏低,向偶数舍入在大多数现实情况中避免了这一统计偏差,因为向上舍入与向下舍入的概率各位50%,在计算平均值时候的影响相对较小

浮点运算

  • 由于溢出的存在,在一定情况下,不满足结合律
    • (3.14+1e10)1e10=0
    • 3.14+(1e101e10)=3.14