带符号数的移位操作
算术移位时应保持数的符号位不变,而数值的大小则要发生变化。左移一位相当于该数乘以2
,而右移一位相当于该数除以2
。
1、原码的移位规则
不论正数还是负数,在左移或右移时,符号位均不变,空出位一律以0
补入。
负数的原码移位前后结果为:
- 左移:移位前有
1
X1
X2 ···
Xn−1
Xn
移位后有
1
X2
X3 ···
Xn
0
- 右移:移位前有
1
X1
X2 ···
Xn−1
Xn
移位后有
1
0
X1 ···
Xn−2
Xn−1
2、补码的移位规则
(1)正数
符号位不变,不论左移还是右移,空出位一律以0
补入。
(2)负数
符号位不变,左移后的空出位补0
,右移后的空出位补1
。
- 左移:移位前有
1
X1
X2 ···
Xn−1
Xn
移位后有
1
X2
X3 ···
Xn
0
- 右移:移位前有
1
X1
X2 ···
Xn−1
Xn
移位后有
1
1
X1 ···
Xn−2
Xn−1