信息的表示及运算 miniWiki

1. 信息存储

2. 整数表示

3. 整数运算

4. 浮点数

二进制小数

\[b \coloneqq (b_{m}\,b_{m-1}\cdots b_{1}\,b_{0}\,.\,b_{-1}\,b_{-2}\cdots b_{1-n}\,b_{-n})_2 = \sum_{k=-n}^m 2^k \times b_k\]

IEEE 754

\[V \coloneqq \left(s\,\underbrace{e_{k-1}\cdots e_{1}\,e_{0}}_{e}\,\overbrace{f_{-1}\,f_{-2}\cdots f_{-n}}^{f}\right)_2 = (-1)^s \times 2^{E(e)} \times M(f)\]

其中

  • $e$ 为 $k$ 位二进制整数,其值为 $\sum_{i=0}^{k-1}2^i\times e_i$
  • $f$ 为 $n$ 位二进制小数,其值为 $\sum_{i=1}^n 2^{-i}\times f_{-i}$
  • 单精度 $k+n=8+23$
  • 双精度 $k+n=11+52$

记 $b \coloneqq 2^{k-1} - 1$,则除特殊值外

  • $E(e) \coloneqq (e \mathbin{?} e : 1) - b$
  • $M(f) \coloneqq (e \mathbin{?} 1 : 0) - b$

根据 $e$ 的取值,可分为三种情形:

  退化情形 常规情形 特殊值
$(e_i)_{i=0}^{k-1}$ 全为 $0$ 既有 $0$ 又有 $1$ 全为 $1$
$e$ $0$ $\sum_{i=0}^{k-1}2^i e_i\in[1,2^k-2]$ $\sum_{i=0}^{k-1}2^i=2^k-1$
$E$ $1-b$ $e-b$  
$M$ $0+f=\sum_{i=1}^n 2^{-i}f_{-i}$ $1+f=1+\sum_{i=1}^n 2^{-i}f_{-i}$  
$\vert V\vert$ $2^{1-b}\times(0+f)$ $2^{e-b}\times(1+f)$ $ f \mathbin{?} \text{NaN} : \infty$
$\min$ $0$ $2^{1-b}$  
$\max$ $2^{1-b}(1-2^{-n})$ $2^b(2-2^{-n})$