This commit is contained in:
krahets
2023-08-22 13:50:12 +08:00
parent 0c9bf14e20
commit 92a0853ab8
64 changed files with 478 additions and 479 deletions

View File

@@ -18,11 +18,11 @@ comments: true
- **反码**:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。
- **补码**:正数的补码与其原码相同,负数的补码是在其反码的基础上加 $1$ 。
图展示了原吗、反码和补码之间的转换方法。
3-4 展示了原吗、反码和补码之间的转换方法。
![原码、反码与补码之间的相互转换](number_encoding.assets/1s_2s_complement.png)
<p align="center"> 图原码、反码与补码之间的相互转换 </p>
<p align="center"> 图 3-4 &nbsp; 原码、反码与补码之间的相互转换 </p>
「原码 true form」虽然最直观但存在一些局限性。一方面**负数的原码不能直接用于运算**。例如在原码下计算 $1 + (-2)$ ,得到的结果是 $-3$ ,这显然是不对的。
@@ -131,9 +131,9 @@ $$
![IEEE 754 标准下的 float 的计算示例](number_encoding.assets/ieee_754_float.png)
<p align="center"> 图IEEE 754 标准下的 float 的计算示例 </p>
<p align="center"> 图 3-5 &nbsp; IEEE 754 标准下的 float 的计算示例 </p>
观察图,给定一个示例数据 $\mathrm{S} = 0$ $\mathrm{E} = 124$ $\mathrm{N} = 2^{-2} + 2^{-3} = 0.375$ ,则有:
观察图 3-5 ,给定一个示例数据 $\mathrm{S} = 0$ $\mathrm{E} = 124$ $\mathrm{N} = 2^{-2} + 2^{-3} = 0.375$ ,则有:
$$
\text { val } = (-1)^0 \times 2^{124 - 127} \times (1 + 0.375) = 0.171875
@@ -143,9 +143,9 @@ $$
**尽管浮点数 `float` 扩展了取值范围,但其副作用是牺牲了精度**。整数类型 `int` 将全部 32 位用于表示数字,数字是均匀分布的;而由于指数位的存在,浮点数 `float` 的数值越大,相邻两个数字之间的差值就会趋向越大。
表所示,指数位 $E = 0$ 和 $E = 255$ 具有特殊含义,**用于表示零、无穷大、$\mathrm{NaN}$ 等**。
如表 3-2 所示,指数位 $E = 0$ 和 $E = 255$ 具有特殊含义,**用于表示零、无穷大、$\mathrm{NaN}$ 等**。
<p align="center"> 表指数位含义 </p>
<p align="center"> 表 3-2 &nbsp; 指数位含义 </p>
<div class="center-table" markdown>