原码乘法运算
部分积
每次提\(2^{-1}\),即右移1位:
原码除法运算
加减交替法
浮点数的表示方法
一个任意进制数\(N\)可以表示为:
\[
N = M \times R^E
\]
其中:
* \(M\)表示尾数,是一个小数;
* \(E\)表示阶码/指数,是一个整数;
* \(R\)表示基数,一般为2,8,16;
尾数的有效数字位数决定了浮点数的表示精度;阶码的有效数字位数决定了浮点数的表示范围;
浮点数的规格化表示
对于基数为\(R\)的规格化浮点数,要求其尾数的绝对值范围:
\[
\frac{1}{R} \le |M| < 1
\]
对于原码表示的浮点数,即要求最高数值位为1;
IEEE 754浮点数标准
- e,阶:用移码表示,即\(E = Exp - (2^{n - 1} - 1)\)
- Frac,小数字段:
- 规格化数表示:\(M = 1 + Frac\);
- 非规格化数表示:\(M = Frac\);
特殊的浮点数表示
浮点数可表示的数值范围
浮点数的加减法
步骤
\[ x\pm y = (M_x 2^{E_x - E_y} \pm M_y)2^{E_y},E_x \le E_y \]
- 检查操作数是否为0;
- 对阶:小阶向大阶对齐;
- 用双符号位的尾数进行加减运算;
- 规格化:
- 如果双符号位出现01、10的非法值,则向右规格化直至合法;
- 检查是否符合规格化小数的要求,向左规格化直至合法;
- 舍入(可能再次规格化):向偶数舍入;