##### 浮点数 - 浮点数 - 浮点数是一种用于表示[[实数]]的计算机数值格式, 由于[[二进制]]计算机无法精确存储无限精度要求的实数, 因而采用浮点数来近似表示, 具体形式类似科学计数法, 包括符号位, 尾数位, 基数和指数位四部分, IEEE 754 是广泛采用的浮点数标准, 主要是单精度浮点数和双精度浮点数 - $x = (-1)^s \times m \times b^{e - \text{bias}}$ - 符号位 $s$, 用来表示数的正负, $0$ 表示正数, $1$ 表示负数 - 尾数位 $m$, 表示数值的精细部分, 在 IEEE 754 标准中, 对于归一化数, 通常采用隐含 $1$ 的形式, 即实际存储的是小数部分, 例如在二进制表示中, 一个归一化数的实际尾数为 $1.f$, 其中 $f$ 为尾数位中存储的小数部分 - 基数 $b$, 是浮点数表示所采用的数值系统的底数, IEEE 754 标准中通常固定为 $2$, 即二进制. 基数本身不是以额外的位存储, 而是标准规定的固定参数 - 指数位 $e - \text{bias}$, 用于存储指数部分 $e$, 它决定了数值的量级. IEEE 754 标准中, 指数通常以偏移方式存储: 对于单精度浮点数, 偏移量为 $127$. 对于双精度浮点数, 偏移量为 $1023$. 存储的指数 $e$ 实际上对应于真实指数 $e_{\text{actual}} = e - \text{bias}$ - 浮点数 IEEE 754 - 单精度浮点数 32 位 - 符号位 1 位 - 指数位 8 位, 偏移量 127 - 尾数位 23 位 - 双精度浮点数 64 位 - 符号位 1 位 - 指数位 11 位, 偏移量 1023 - 尾数位 52 位 - 特殊值 - 零, 指数和尾数全为 0, 符号位决定正负零 - 无穷大, 指数全为 1, 尾数全为 0, 符号位决定正负无穷大 - 非数, 指数全为 1, 尾数非 0, 用于表示无效运算结果 - 运算 - 加减法, 对齐指数, 对尾数进行加减, 然后规范化结果 - 指数相加, 尾数相乘, 然后规范化结果 - 指数相减, 尾数相除, 然后规范化结果 - 舍入模式, 向最近偶数舍入 (默认), 向零舍入, 向正无穷舍入, 向负无穷舍入 - 异常处理, 处理溢出, 下溢, 除零, 无效运算等异常 >[!example]- 浮点数 > - $6.5=0\ 10000001\ 10100000000000000000000$ > - $6.5 =(-1)^0 \times 2^{(129-127)} \times 1.625$ > - 十进制转二进制并归一化表示 > - $6.5_{10}​=110.1_{2}=1.101_{2} \times 2^2$ > - 符号位 $1$ 位, 值为 $0$ > - 指数位 $8$ 位, 值为 $e=2+127=129=10000001_{2}$​ > - 尾数位 $23$ 位, 值补零为 $101_2=​10100000000000000000000_2​$ > - $6.3=0\ 10000001\ 10010011001100110011010=6.30000019073486328125$ > - $6.3 =(-1)^0 \times 2^{(129-127)} \times 1.5750000476837158203125$ > - 十进制转二进制并归一化表示 > - $6.3_{10}​=110.010011001100\dots_{2}=1.10010011001100\dots_{2} \times 2^2$ > - 符号位 $1$ 位, 值为 $0$ > - 指数位 $8$ 位, 值为 $e=2+127=129=10000001_{2}$​ > - 尾数位 $23$ 位, 值截断为 $10010011001100\dots_2​=​10010011001100110011010_2​$