Update the book based on the revised second edition (#1014)

* Revised the book

* Update the book with the second revised edition

* Revise base on the manuscript of the first edition
This commit is contained in:
Yudong Jin
2023-12-28 18:06:09 +08:00
committed by GitHub
parent 19dde675df
commit f68bbb0d59
261 changed files with 643 additions and 647 deletions

View File

@@ -4,7 +4,7 @@
在本书中,标题带有 * 符号的是选读章节。如果你时间有限或感到理解困难,可以先跳过,等学完必读章节后再单独攻克。
## 整数编
## 原码、反码和补
在上一节的表格中我们发现,所有整数类型能够表示的负数都比正数多一个,例如 `byte` 的取值范围是 $[-128, 127]$ 。这个现象比较反直觉,它的内在原因涉及原码、反码、补码的相关知识。
@@ -88,9 +88,9 @@ $$
## 浮点数编码
细心的你可能会发现:`int``float` 长度相同,都是 4 bytes ,但为什么 `float` 的取值范围远大于 `int` ?这非常反直觉,因为按理说 `float` 需要表示小数,取值范围应该变小才对。
细心的你可能会发现:`int``float` 长度相同,都是 4 字节 ,但为什么 `float` 的取值范围远大于 `int` ?这非常反直觉,因为按理说 `float` 需要表示小数,取值范围应该变小才对。
实际上,**这是因为浮点数 `float` 采用了不同的表示方式**。记一个 32-bit 长度的二进制数为:
实际上,**这是因为浮点数 `float` 采用了不同的表示方式**。记一个 32 长度的二进制数为:
$$
b_{31} b_{30} b_{29} \ldots b_2 b_1 b_0
@@ -98,9 +98,9 @@ $$
根据 IEEE 754 标准32-bit 长度的 `float` 由以下三个部分构成。
- 符号位 $\mathrm{S}$ :占 1 bit ,对应 $b_{31}$ 。
- 指数位 $\mathrm{E}$ :占 8 bits ,对应 $b_{30} b_{29} \ldots b_{23}$ 。
- 分数位 $\mathrm{N}$ :占 23 bits ,对应 $b_{22} b_{21} \ldots b_0$ 。
- 符号位 $\mathrm{S}$ :占 1 ,对应 $b_{31}$ 。
- 指数位 $\mathrm{E}$ :占 8 ,对应 $b_{30} b_{29} \ldots b_{23}$ 。
- 分数位 $\mathrm{N}$ :占 23 ,对应 $b_{22} b_{21} \ldots b_0$ 。
二进制数 `float` 对应值的计算方法为: