算数移位
左移一位相当与*基数,右移一位相当于/基数。(e.g.二进制:左移乘以2,右移除以2)
移位后符号不变
正数(符号位为0),[x]原=[x]补=[x]反=真值,移位后出现的空位均以0添之。
以下均为负数空位填补规则
原码添0,(定点小数同理)左移,低位补0,若舍弃位!=0,出现严重误差;右移,高位补0,若舍弃位!=0,丢失精度
补码左添0,右添1左移同反码,右移同原码
负数补码=反码末位+1
负数补码中,最右边及其右边同原码,最右边的1的左边同反码
反码添1
除符号位均与原码相反,移位后所添代码也应与原码相反
逻辑移位
无符号数:左移高位移丢,地位添0;右移低位移丢,高位添0
循环移位
移除的数位又被移入数据中,而是否带进位则要看是否将进位标志位加入循环位移
应用于低字节和高字节数据转换
- 带进位标志位CF(大循环):移出的位放到进位位上,原进位位补上空缺。
- 不带进位标志位CF(小循环):用移出的位补上空缺