Skip to content

Commit

Permalink
错误更正
Browse files Browse the repository at this point in the history
  • Loading branch information
ayu-exorcist committed Jun 10, 2024
1 parent d493cbd commit 5dcef66
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions docs/topics/浮点数-IEEE-754.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,22 +63,14 @@
> 1. 偏移指数: `(0, 2^e - 1)`, 也即 `[1, 2^e - 2]`, 表示规约形式的浮点数. 规约形式的浮点数隐含整数位为 `1`
> 2. 偏移指数为 `0` 且尾数的小数部分非 `0`, 表示非规约形式的浮点数. 非规约形式的浮点数隐含整数位为 `0`
> 3. 非规约形式的浮点数的偏移指数比规约形式的浮点数的偏移指数小 `1`
> 1. 例如: 最小规约形式的单精度 (32 bit), 浮点数的偏移指数为 `1`, 实际指数为 `1 - 127` = `-126`; 而非规约的单精度浮点数的偏移指数为 `0` 时, 对应的实际指数为 `0 - 127 + 1` = `-126`, `-127``-126``1`
> 1. 例如: 最小规约形式的单精度 (32 bit), 浮点数的偏移指数为 `1`, 实际指数为 `1 - 127` = `-126`; 而非规约的单精度浮点数的偏移指数为 `0` 时, 对应的实际指数为 `0 - 127 + 1` = `-126`, `0``1``1`
>
> 使用隐含整数位的优点: 增加了 `1` 位浮点数的[有效数长度]
>
> 使用非规约形式的浮点数的优点 (渐进式下溢出 gradual underflow 的优点): 避免了[突然式下溢出 abrupt underflow], 使得每个浮点数之间的间距 gap 一致 = `2^(-m + (1 - (2^(e-1) - 1)))`
>
> {style="note"}
| 名称 | radix | *Significand bits (包括1位隐含的整数位)* | Decimal digits (精度 = lg2^Significand bits) | *指数位* | 固定偏移值 | E min | E max |
| :--------------------: | :---: | :--------------------------------------: | :------------------------------------------: | :------: | :--------------: | :-----------: | :---------------: |
| binary16 半精度浮点数 | 2 | 1 + 10 = **11** | lg2^11 ≈ 3.31 | **5** | 2^(5-1) - 1 = 15 | -14 = 1 - +15 | 2^(5-1) - 1 = +15 |
| binary32 单精度浮点数 | 2 | **24** | 7.22 | **8** | 127 | −126 | +127 |
| binary64 双精度浮点数 | 2 | **53** | 15.95 | **11** | 1023 | −1022 | +1023 |
| binary128 四精度浮点数 | 2 | **113** | 34.02 | **15** | 16383 | −16382 | +16383 |
| binary256 八精度浮点数 | 2 | **237** | 71.34 | **19** | 262143 | -262142 | +262143 |

```javascript
32 位单精度浮点数
31
Expand Down Expand Up @@ -110,6 +102,14 @@ max subnormal number * 00000000 11111111111111111111111 ±(1−2^−23) × 2^−
sign
```

| 名称 | radix | *Significand bits (包括1位隐含的整数位)* | Decimal digits (精度 = lg2^Significand bits) | *指数位* | 固定偏移值 | E min | E max |
| :--------------------: | :---: | :--------------------------------------: | :------------------------------------------: | :------: | :--------------: | :-----------: | :---------------: |
| binary16 半精度浮点数 | 2 | 1 + 10 = **11** | lg2^11 ≈ 3.31 | **5** | 2^(5-1) - 1 = 15 | -14 = 1 - +15 | 2^(5-1) - 1 = +15 |
| binary32 单精度浮点数 | 2 | **24** | 7.22 | **8** | 127 | −126 | +127 |
| binary64 双精度浮点数 | 2 | **53** | 15.95 | **11** | 1023 | −1022 | +1023 |
| binary128 四精度浮点数 | 2 | **113** | 34.02 | **15** | 16383 | −16382 | +16383 |
| binary256 八精度浮点数 | 2 | **237** | 71.34 | **19** | 262143 | -262142 | +262143 |

## 浮点数的特点

* 只能精确表示可由二进制科学计数法 `(-1)^s * m * 2^e` 表示的数值, m 超出精度的部分自动进一舍零. 这也是 0.1, 1.1 等浮点数无法被精确存储的原因
Expand Down

0 comments on commit 5dcef66

Please sign in to comment.