算数移位
左移一位相当与*基数,右移一位相当于/基数。(e.g.二进制:左移乘以2,右移除以2)
移位后符号不变
正数(符号位为0),[x]原=[x]补=[x]反=真值,移位后出现的空位均以0添之。
以下均为负数空位填补规则
原码添0,(定点小数同理)左移,低位补0,若舍弃位!=0,出现严重误差;右移,高位补0,若舍弃位!=0,丢失精度
补码左添0,右添1左移同反码,右移同原码
负数补码=反码末位+1
负数补码中,最右边及其右边同原码,最右边的1的左边同反码
反码添1
除符号位均与原码相反,移位后所添代码也应与原码相反

逻辑移位
无符号数:左移高位移丢,地位添0;右移低位移丢,高位添0
循环移位
移除的数位又被移入数据中,而是否带进位则要看是否将进位标志位加入循环位移
应用于低字节和高字节数据转换
- 带进位标志位CF(大循环):移出的位放到进位位上,原进位位补上空缺。
- 不带进位标志位CF(小循环):用移出的位补上空缺

本文详细介绍了移位运算的三种类型:算数移位、逻辑移位和循环移位。算数移位中,正数左移乘以基数,右移除以基数,符号位不变;负数移位时,补码规则复杂,可能导致误差或精度丢失。逻辑移位不考虑符号,仅用0填充空位。循环移位则将移出的位重新插入数据中,可以带或不带进位标志位。这些运算在计算机科学和编程中有着广泛应用。
785

被折叠的 条评论
为什么被折叠?



