我很弱,但是我要坚强!绝不让那些为我付出过的人失望!
文章目录
加减运算
原码的加减运算

补码的加减运算

溢出判断

- 有点类似于 循环移位
方法一:一位符号位判断

方法二:符号与最高位进位情况

方法三:双符号位

符号扩展

总结

乘法运算
原码一位乘法
原理 :

手算方法模拟

补码一位乘法(课本)

实现原理

手算模拟

- 注意: 补码的移位为 “算术右移” 符号位固定不动 ,正数补零,负数补一 , 与原码不同,原码是 “逻辑右移”
除法运算
原码的除法
加减交替法
手算模拟(十进制)

手算除法(二进制)

- 规律 : 忽略小数点,每确定一位商,进行一次减法,得到4位余数,在余数末尾补0,再确定下一位商。确定5位商即可停止(机器字长为5位)
恢复余数法 (计算机模拟)



- 形成错位除法相减的方法: 逻辑右移
恢复余数法(手算)


- 注意:左移n次,上商n+1次,最后一次上商余数不左移
恢复余数法改进->加减交替法
- 改进原理

实现方法:

注意:
- 余数的正负性与商相同
- 恢复余数法:当余数为负时商0,并+除数|,再左移,再-|除数|
- 加减交替法:当余数为负时商0,并左移,再+|除数|
- 若余数为负,需商0,并+
[|y|]补得到正确余数(强调)

注意 : 加/减 n+1 次,每次加减确定一位商,左移n次(最后一次加减完不移位)最终可能还要再多一次加
补码的除法
加减交替法
- 符号位参与运算(负数的补码并不是绝对值的补码)
- Eg :
y = -0.1011—>[-y]补 = 00.1011 - 被除数/余数、除数采用双符号位
- 关键思路 : 确定 除数与余数 是否同号(确定是否 商 1 / 0)
- 注意 : 补码的加减交替法 最后一位的处理 末位商 置为
1,既不像原码一样 的恢复余数
运算规则
被除数和除数同号,则被除数减去除数;异号则被除数加上除数。
- 余数和除数同号,商 1,余数左移一位减去除数;
- 余数和除数异号,商 0,余数左移一位加上除数。
- 重复n次 💭

除法运算的总结

Tips
-
补码的符号位能够参与运算
-
关于Why 可以参考这里 👉 跳转链接
-
运算器的组成(注意:ACC MQ X 的组成形式)

鸣谢
-
本文参考视频
王道计组视频
本文详述了原码、补码的加减运算原理及溢出判断方法,包括一位符号位判断、进位情况分析和符号扩展,还涵盖了乘法和除法的运算技巧,如手算模拟、加减交替法等,适合深入理解计算机底层运算机制。
700





