定点运算
移位运算
移位的意义
移位是指数据位移动,而不是小数点移动
左移 - 绝对值扩大
右移 - 绝对值缩小
在计算机中,移位与加减配合可以实现乘除运算。
算数移位的规则
符号位不变
码制 | 填补代码 | |
---|---|---|
正数 | 原码,补码,反码 | 0 |
负数 | 原码 | 0 |
负数 | 补码 | 左移添0 |
负数 | 补码 | 右移添1 |
负数 | 反码 | 1 |
算数移位与逻辑移位的区别
- 算数移位:有符号数的移位。
- 逻辑移位:无符号数的移位。
- 左移右移都是补0。
加减法运算
-
加法
- 整数:$[A]_补+[B]_补=[A+B]_补(mod\ 2^{n+1})$
- 小数:$[A]_补+[B]_补=[A+B]_补(mod\ 2)$
-
减法
- 整数:$[A-B]_补=[A+(-B)]_补=[A]补+[-B]_补(mod\ 2^{n+1})$
- 小数:$[A-B]_补=[A+(-B)]_补=[A]补+[-B]_补(mod\ 2)$
溢出判断
一位符号位判断溢出
满足下面式子则溢出:
$最高有效位进位 \oplus 符号位进位=1$
两位符号位判断溢出
需要设置两位符号位:
$$
[x]_补=\begin{cases}
00,x & 1 > x \ge 0 \\
4+x & 0 > x \ge -1(mod\ 4)
\end{cases}
$$
结果的双符号位相同,未溢出。
结果的双符号位不同,溢出。
说白了就是正数符号位00,负数符号位11,如果算完变成10或者01就溢出了。
乘法
不会
除法
暂不掌握