Appearance
右移
本节目标:理解“右移”的核心思路,并能把它用于实际开发或面试表达。 在计算机科学中,将一个数右移一位的操作通常被称为逻辑右移或算术右移,具体取决于处理的是无符号数还是有符号数。在大多数编程语言中,对整数进行右移操作意味着将该数的二进制表示向右移动指定的位数,相当于除以2的指定次幂。对于无符号数,这通常是逻辑右移,对于有符号数,这是算术右移。
逻辑右移
逻辑右移(\>\>\>在某些语言中)是指将数字的二进制表示向右移动,并在左边空出的位上填充0。逻辑右移不考虑数字的符号位,始终在左侧填充0。
算术右移
算术右移(\>\>在大多数编程语言中)也是将数字的二进制表示向右移动,但是填充空出的最左边的位时会考虑原始数的符号。对于正数,在左侧填充0;对于负数,在左侧填充1。这样做是为了保持负数的符号位不变。
右移的意义
右移一位通常意味着将数字除以2,例如:
- 如果有一个整数
10,其二进制表示为1010,右移一位后变为0101,等于5。 - 如果有一个整数
-10(假设使用8位二进制表示,为有符号整数),其二进制表示可能为11110110,右移一位后变为11111011(注意符号位为1,表示这是一个负数),这仍然保持了其为负数的特性。
