本文基于 IEEE754 标准,介绍计算机实现 FP32(32 位浮点数)加法、乘法运算的过程。
IEEE754标准
在 IEEE754 标准下,32 个比特位被拆分为 符号位(1bit)、指数位(8bit)、小数位(23bit) 三个部分。比如:
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
符号位 | 指数位 | 指数位 | 指数位 | 指数位 | 指数位 | 指数位 | 指数位 | 指数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 | 小数位 |
上例中,
- 符号位sign 为 0
- 指数位exponent 为 10010011,指数位的范围为(00000001 ~ 11111110),其中 00000000 代表非规格化数、11111111 代表无穷大。
-
小数位fraction 为 00111000010100111000010
表示的浮点数为 \((-1)^{sign} * 2 ^{exponent - 127} * (1 + \frac{fraction}{2^{23}})\)双符号位判决法