编程小知识
逻辑右移和符号右移
逻辑右移(Logical Right Shift)
- 操作对象: 可以是有符号整数或无符号整数。
- 操作过程: 将所有位向右移动指定的位数,空出的左侧位用零填充。
- 用途: 适用于无符号整数。因为无符号整数没有符号位,所以右移时只需要填充零。
例子:
# 在逻辑右移两位后,得到 00101010
10101010 >> 2
算术右移(Arithmetic Right Shift)
- 操作对象: 通常用于有符号整数。
- 操作过程: 将所有位向右移动指定的位数,空出的左侧位用符号位的值填充。符号位是二进制表示中最高位的位。
- 用途: 适用于有符号整数。保持整数的符号,确保右移后结果的符号与原始整数相同。
例子:
# 在算术右移两位后,得到 11110010
11001010 >> 2
在算术右移中,如果原整数为负数,符号位为1,那么右移时会在左侧用1填充;如果原整数为正数,符号位为0,那么右移时会在左侧用0填充。