数据的加减运算(下)
算数移位和逻辑移位

- 原码的算数移位
- 原码在进行算数移位时,符号位不参与运算,只有数值位移动
- 算数左移时,低位补0,高位舍弃
- 算数右移时,高位补0,低位舍弃
- 补码的算数移位
- 补码在进行算数移位时,符号位也会参与运算
- 正数在进行算数左移时,低位补0,高位舍弃;算数右移时,高位补0,低位舍弃
- 负数在进行算数左移时,低位补0,高位舍弃;算数右移时,高位补1,低位舍弃






我们可以认为算数右移的就是除2向下取整,但是我们要意识到,对负数的下取整和对正数的下取整是不同的,比如-3算数右移一位得到-2,因为-1.5向下取整就是-2
定点数的加减运算

如何用A的补码快速得到-A的补码?全部位按位取反,末位加一。也可找到从右向左数的第一个1,后面的所有位取反
溢出的判别方法
当且仅当两个符号相同的数相加或者两个符号不同的数字相减时才可能产生溢出,溢出的判别方法如下:


加减运算电路


带标志位的加法器



标志位的生成及其作用


无符号数的大小比较

有符号数的大小比较

首先执行\([A]_{补} - [B]_{补}\)
- A = B 一定有
ZF=1 - A > B 一定有
OF = SF,ZF=0 - A < B 一定有
OF != SF,ZF=0

浙公网安备 33010602011771号