java位移如何计算
Java 位移操作
Java 提供了三种位移操作符:左移(<<)、右移(>>)和无符号右移(>>>)。这些操作符用于对整数的二进制位进行移动。
左移(<<)
左移操作符将二进制位向左移动指定的位数,低位补 0。左移一位相当于乘以 2。
示例代码:
int a = 5; // 二进制:0000 0101
int result = a << 2; // 左移 2 位,结果为 0001 0100(20)
System.out.println(result); // 输出 20
右移(>>)
右移操作符将二进制位向右移动指定的位数。对于有符号数,高位补符号位(正数补 0,负数补 1)。右移一位相当于除以 2(向下取整)。
示例代码:
int a = 20; // 二进制:0001 0100
int result = a >> 2; // 右移 2 位,结果为 0000 0101(5)
System.out.println(result); // 输出 5
int b = -20; // 二进制:1110 1100(补码)
int result2 = b >> 2; // 右移 2 位,结果为 1111 1011(-5)
System.out.println(result2); // 输出 -5
无符号右移(>>>)
无符号右移操作符将二进制位向右移动指定的位数,高位补 0。无论正负数,高位均补 0。
示例代码:

int a = 20; // 二进制:0001 0100
int result = a >>> 2; // 无符号右移 2 位,结果为 0000 0101(5)
System.out.println(result); // 输出 5
int b = -20; // 二进制:1110 1100(补码)
int result2 = b >>> 2; // 无符号右移 2 位,结果为 0011 1011(1073741819)
System.out.println(result2); // 输出 1073741819
注意事项
- 位移操作符仅适用于整数类型(
byte、short、int、long)。 - 位移位数超过数据类型的位数时,会取模运算。例如,
int类型位移 32 位等同于位移 0 位。 - 无符号右移(
>>>)对byte和short类型操作时,会先转换为int类型,结果可能不符合预期。






