算数移位时应保持数的符号位不变,数值的大小则要发生变化。左移一位相当于该数乘以2,右移一位相当于该数除以2。
移位运算有算数移位、逻辑移位和循环移位一共3类,每种移位有左移和右移之分。
1. 算数移位
算数移位的对象是带符号数,在移位的过程中**必须保持操作数的符号不变**。左移一位时如果不产生溢出,则数值乘以2;右移一位时,
1.1 原码移位规则
不论正数还是负数,在左移或者右移时,符号位均不变,空出的位置一律以“0”补入。
负数的源码移位前后的 结果如下:
左移:移位前有
移位后有
右移:移位前有
移位后有
1.2 补码移位规则
(1)正数
符号位不变,不论左移或右移,空出的位置一律以“0”补入
(2)负数
左移:移位前有
移位后有
右移: 移位前有
移位后有
2. 逻辑移位
逻辑移位的对象是无符号数,因此移位时不需要考虑符号问题。
逻辑左移时,高位移丢,低位填“0”;逻辑右移时,低位移丢,高位填“0”
3. 循环移位
循环移位按是否与进位位一起移位又可分为两种:不带进位位的小循环、带进位位的大循环
版权声明:本文为qq_59109986原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。