补码加减法
转补码后直接进行加法
$A_{补}\pm B_{补}=(A\pm B)_{补}$
并行加减法
$$ C_{i+1}=A_{i}B_{i}+(A_{i}\oplus B_{i})\cdot C_{i} $$
递归展开以上式子形成 $O(1)$ 的 Wire 电路,无需 Reg,缩短了占用周期
但由于电路复杂,一般采用分组,组内并行,组间串行
符号位
| 符号位 | 用途 | 计算 | 直观计算 | 无符号运算时有意义 | 有符号运算时有意义 |
|---|---|---|---|---|---|
| ZF | 结果是否为 0 | $F=0$ | ✅ | ✅ | |
| OF | 溢出 | $C_{符号位} \oplus C_{最高位}$ aka $C_{n}\oplus C_{n-1}$ |
是否在数据范围内 | ✅ | |
| SF | 符号 | $S_{A}\oplus S_{B}$ | ✅ | ||
| CF | 进/借位 | $\mathrm{Sub} \oplus C_{\mathrm{out}}$ | 视作无符号数看是否进位/借位 | ✅ | |
| 低位进位 | 用加法器算减法 | $\mathrm{Sub}$ | ✅ | ||
| 加数/减数 | $\mathrm{Sub}$ 为真则 $\sim B$ $\mathrm{Sub}$ 为假则 $B$ |
✅ |
Note
低位进位+加数/减数配合实现只用加法器算加减法 因为减法时 $[-B]{补}=\sim[B]{补}+1$