单精度浮点数

1. 单精度浮点数(float)

结构示意图
| 符号位 (1位) | 指数 (8位) | 尾数 (23位) |
编码步骤
  1. 确定符号位

    • 正数:0
    • 负数:1
  2. 计算指数

    • 指数偏移量(Bias)为127。
    • 真实指数 = 指数部分 - 127。
    • 存储的指数值 = 真实指数 + 127。
  3. 计算尾数

    • 将数值归一化为1.xxxxxx的形式,省略隐含的1,只存储后面的部分。
    • 如果尾数不足23位,用0填充;如果超过23位,进行舍入。
示例

将十进制数 -12.75 转换为float:

  1. 符号位:负数,符号位为1。

  2. 转换为二进制

    • 12.75 → 1100.11₂
    • 归一化:1.10011 × 2³
  3. 指数

    • 真实指数 = 3
    • 存储的指数 = 3 + 127 = 130 → 10000010₂
  4. 尾数

    • 10011 后补0至23位:10011000000000000000000
  5. 最终编码

    符号位 | 指数       | 尾数
    1      | 10000010 | 10011000000000000000000
    

好的,我将把所有以 "()" 包围的 LaTeX 数学公式转换为以 "$" 包围的数学公式。


IEEE 754 单精度(float 型)浮点数是如何表示不同类型的数值(如零、无穷大、规格化数、非规格化数和未定义数),以下是一个详细的表格:

类别 符号位(Sign Bit) 指数位(Exponent) 尾数位(Mantissa) 描述
正零 0 00000000 00000000000000000000000 表示数值 +0
负零 1 00000000 00000000000000000000000 表示数值 -0
正无穷大 0 11111111 00000000000000000000000 表示数值 +∞
负无穷大 1 11111111 00000000000000000000000 表示数值 -∞
规格化数 0 或 1 00000001 ~ 11111110 非全零 形式为 (1)符号位×1.F×2(E127)E 为指数值
非规格化数(次正规数) 0 或 1 00000000 非全零 形式为 (1)符号位×0.F×2126 ,用于表示非常接近零的数值
NaN(非数) 0 或 1 11111111 非全零 表示未定义或不可表示的数值(例如,0/0 或 √-1)。如果尾数的最高位为1,则为静默 NaN,否则为信号 NaN

详细说明

  1. 符号位(Sign Bit)

    • 0 表示正数。
    • 1 表示负数。
  2. 指数位(Exponent)

    • 规格化数:指数位介于 0000000111111110(十进制 1 到 254),实际指数为 E - 127
    • 非规格化数:指数位全为 00000000,实际指数固定为 -126
    • 特殊情况
      • 全为 1 表示无穷大或 NaN。
      • 全为 0 且尾数全为 0 表示零。
  3. 尾数位(Mantissa/Fraction)

    • 规格化数:假定有一个隐含的 1,即数值形式为 1.F
    • 非规格化数:不假定隐含的 1,数值形式为 0.F
    • 特殊情况
      • 尾数全为 0 时,根据指数位判断是否为零或无穷大。
      • 尾数非全零且指数全 1 时表示 NaN。

补充说明

总结

IEEE 754 标准通过不同的位模式有效地表示了多种数值类型,包括零、无穷大、普通浮点数、次正常数以及非数(NaN)。理解这些表示方式有助于在计算机系统中正确处理浮点数运算,尤其是在处理极端数值和特殊情况时。