浮点数表示与运算¶
浮点数的表示¶
浮点数的表示形式¶
浮点数是一种表示实数的方法,它将实数表示为尾数和阶码的乘积。
\[ N = M \times R^E \]
其中,
-
\(r\) 是浮点数阶码的底(隐含),与尾数的基数相同,通常为 \(2\)
-
\(M\) 和 \(E\) 分别是尾数和阶码,都是有符号的定点数
| \(J_f\) | \(J_1 J_2 J_m\) | \(S_f\) | \(S_1 S_2 S_n\) |
|---|---|---|---|
| 阶码符号位 | 阶码数值部分 | 尾数符号位 | 尾数数值部分 |
Tip
-
阶码是整数,阶符 \(J_f\) 和阶码的位数 \(m\) 共同决定浮点数的表示范围和小数点的实际位置
-
数符 \(S_f\) 表示浮点数的符号,尾数的位数 \(n\) 决定浮点数的精度
浮点数的表示范围¶
浮点数的规格化¶
IEEE 754标准¶
| \(m_s\) | \(E\) | \(M\) |
|---|---|---|
| 数符 | 阶码(移码表示) | 尾数(原码表示) |
IEEE 754标准规定的常用的浮点数有短浮点数(\(32\) 位, float)、长浮点数(\(64\) 位, double)和临时浮点数(\(128\) 位):
| 类型 | 符号位 | 阶码 | 尾数数值 | 偏置值 |
|---|---|---|---|---|
| 短浮点数 | \(1\) | \(8\) | \(23\) | \(7FH\)(\(127_{10}\)) |
| 长浮点数 | \(1\) | \(11\) | \(52\) | \(3FFH\)(\(1023_{10}\)) |
| 临时浮点数 | \(1\) | \(15\) | \(112\) | \(3FFFH\)(\(16383_{10}\)) |
定点、浮点表示的区别¶
浮点数的加减运算¶
对阶¶
尾数加减运算¶
尾数规格化¶
舍入¶
溢出判断¶
C语言中的浮点数类型¶
数据的大小端和对齐存储¶
-
大端模式: 将数据的最高有效字节存放在低地址单元中
-
小端模式: 将数据的最高有效字节存放在高地址单元中