<<= 或 >>= 在 Java 中是什么意思?

What does <<= or >>= mean in Java?

我在 W3schools 的 Java 中学习赋值运算符。但是我没看懂这两个运算符是什么意思?

它是短表达式,就像 i = i >> 2i = i << 2

这些是赋值运算符的示例。本质上,它们都在一个变量上执行算术运算,并将其结果分配给该变量,在一个单一的操作中。大多数情况下,它们相当于分两步完成:

int a = 23;
int b = 2;

a += b; // addition - same as `a = a + b`
a -= b; // subtraction
a *= b; // multiplication
a /= b; // floor division
a %= b; // modulo division
a &= b; // bitwise and
a |= b; // bitwise or
a ^= b; // bitwise xor
a >>= b; // right bitshift
a <<= b; // left bitshift

位移位运算正是您要问的。他们采用数字的二进制表示,并将其向左或向右移动给定的位数,用零填充缺失的空格。比如23的二进制表示是00010111.

因此,23 << 2 等于 01011100,即 92;而 23 >> 2 将等于 00000101,或 5.

您也可以将其视为使用二的幂进行整数乘法或除法:

  • a << b 通常会产生与 a * Math.pow(2, b)
  • 相同的结果
  • a >> b 通常会产生与 a / Math.pow(2, b)
  • 相同的结果