文章目录
- 补码的加减法
- 算法的流程与逻辑实现
- 溢出判断
- 溢出原因
- 单符号位判断
- 双符号位(变形补码)
- 基本的加法/减法器
- 舍入方法
- 习题
补码的加减法
数用补码表示,符号位参与运算
考虑几个问题?
1.实际操作能否只取决于操作码?
2.结果需不需要修正?
3.如何将减法转换为加法?
如何求变补?不管Y的补是正还是负,将其符号连同位数一起各位变反,末位再加一
简单来说,就是从右边第一位1开始(本身不用变)左边的包括符号位均取反
算法的流程与逻辑实现
溢出判断
如何溢出?运算过程中,出现大于字长绝对值的现象
溢出原因
单符号位判断
用符号位产生的进位与最高有效位产生的进位进行异或运算,结果为1表示溢出
可以看到,减法的时候,用的是减数的变补和被减数的补
双符号位(变形补码)
两个符号位都看作数码一样参加运算;两数进行以$2^{n+2}为模的加法,即最高位产生的进位要丢掉$
正数的最高位是00,负数是11,出现01或者10表示溢出
结果的符号位是01表示正溢出;出现10表示负溢出
$S_{f1}$是最高符号位,$S_{f2}是第二符号位$
基本的加法/减法器
舍入方法
习题