📅  最后修改于: 2023-12-03 15:29:06.760000             🧑  作者: Mango
Java中有两个运算符:>> 和 >>>,用于对整数进行位移操作。
>> 表示带符号的右移。它将位的值向右移动,并用原来的符号填充最高位(也就是符号位)。例如:
int a = -8;
int b = a >> 2;
System.out.println(b); // 输出 -2
在上面的例子中,a 的二进制表示是 11111111 11111111 11111111 11111000(补码表示)。然后我们将其右移 2 位,得到了 11111111 11111111 11111111 11111110,这是 -2 的二进制补码表示。
>>> 表示无符号右移。它将位的值向右移动,用 0 填充最高位。例如:
int a = -8;
int b = a >>> 2;
System.out.println(b); // 输出 1073741822
在上面的例子中,a 的二进制表示是 11111111 11111111 11111111 11111000(补码表示)。然后我们将其右移 2 位,得到了 00111111 11111111 11111111 11111110,这是 1073741822 的二进制表示。
注意,使用这些运算符时要格外小心。超出 int 类型范围(32 位)的位移操作有可能会导致预期外的结果。为了避免这种情况,最好使用 long 类型进行位移操作。