单精度浮点数
1. 单精度浮点数(float)
- 总位数:32位
- 组成:
- 符号位:1位
- 指数:8位
- 尾数:23位
结构示意图
| 符号位 (1位) | 指数 (8位) | 尾数 (23位) |
编码步骤
-
确定符号位:
- 正数:0
- 负数:1
-
计算指数:
- 指数偏移量(Bias)为127。
- 真实指数 = 指数部分 - 127。
- 存储的指数值 = 真实指数 + 127。
-
计算尾数:
- 将数值归一化为1.xxxxxx的形式,省略隐含的1,只存储后面的部分。
- 如果尾数不足23位,用0填充;如果超过23位,进行舍入。
示例
将十进制数 -12.75 转换为float:
-
符号位:负数,符号位为1。
-
转换为二进制:
- 12.75 → 1100.11₂
- 归一化:1.10011 × 2³
-
指数:
- 真实指数 = 3
- 存储的指数 = 3 + 127 = 130 → 10000010₂
-
尾数:
- 10011 后补0至23位:10011000000000000000000
-
最终编码:
符号位 | 指数 | 尾数 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 | 非全零 | 形式为 |
| 非规格化数(次正规数) | 0 或 1 | 00000000 | 非全零 | 形式为 |
| NaN(非数) | 0 或 1 | 11111111 | 非全零 | 表示未定义或不可表示的数值(例如,0/0 或 √-1)。如果尾数的最高位为1,则为静默 NaN,否则为信号 NaN |
详细说明
-
符号位(Sign Bit):
0表示正数。1表示负数。
-
指数位(Exponent):
- 规格化数:指数位介于
00000001到11111110(十进制 1 到 254),实际指数为E - 127。 - 非规格化数:指数位全为
00000000,实际指数固定为-126。 - 特殊情况:
- 全为
1表示无穷大或 NaN。 - 全为
0且尾数全为0表示零。
- 全为
- 规格化数:指数位介于
-
尾数位(Mantissa/Fraction):
- 规格化数:假定有一个隐含的
1,即数值形式为1.F。 - 非规格化数:不假定隐含的
1,数值形式为0.F。 - 特殊情况:
- 尾数全为
0时,根据指数位判断是否为零或无穷大。 - 尾数非全零且指数全
1时表示 NaN。
- 尾数全为
- 规格化数:假定有一个隐含的
补充说明
- 规格化数提供了最大的精度和动态范围,因为其尾数的最高有效位始终为
1,避免了冗余表示。 - 非规格化数允许表示比最小规格化数更接近零的数值,但其精度较低。
- **NaN(非数)**用于表示未定义或不可表示的数值,如 0 除以 0 或负数的平方根。
- 静默 NaN(Quiet NaN):不会引发异常,通常用于传递错误状态。
- 信号 NaN(Signaling NaN):用于引发异常或中断,指示存在未处理的错误。
总结
IEEE 754 标准通过不同的位模式有效地表示了多种数值类型,包括零、无穷大、普通浮点数、次正常数以及非数(NaN)。理解这些表示方式有助于在计算机系统中正确处理浮点数运算,尤其是在处理极端数值和特殊情况时。