📜  >> vs >>> java中的运算符(1)

📅  最后修改于: 2023-12-03 15:29:06.760000             🧑  作者: Mango

>> vs >>> Java中的运算符

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 的二进制表示。

小结
  • >> 运算符是带符号右移,移动后用原符号填充左边空出来的位;
  • >>> 运算符是无符号右移,移动后左边空出来的位用 0 填充。

注意,使用这些运算符时要格外小心。超出 int 类型范围(32 位)的位移操作有可能会导致预期外的结果。为了避免这种情况,最好使用 long 类型进行位移操作。