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

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

提问人:CypherZ 提问时间:6/1/2021 更新时间:6/1/2021 访问量:109

问:

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

Java 赋值运算符

评论

1赞 Yoshikage Kira 6/1/2021
这些是左移和右移的简短符号。有点像.不过,在他们的网站上对此进行了解释。这些是位明智的操作。stackoverflow.com/questions/55203804/......+=
2赞 Dawood ibn Kareem 6/1/2021
这些是复合赋值运算符,与 Shift 运算符相关
0赞 Anonymous 6/1/2021
Java 中的复合赋值运算符

答:

1赞 MoYang 6/1/2021 #1

这是简短的表达,就像和i = i >> 2i = i << 2

评论

1赞 Yoshikage Kira 6/1/2021
我怀疑他们是否明白这意味着什么。如果你扩展你的答案会更好,这样会更好。就像向左或向右移动一样。
0赞 MoYang 6/1/2021
我的错,我是新来者,我会重写我的答案
0赞 Yoshikage Kira 6/1/2021
当然,您可以根据需要多次编辑答案。人们倾向于对好的详细答案进行投票。
1赞 Dawood ibn Kareem 6/1/2021
这并不完全正确 - 使用复合赋值运算符,左侧只计算一次。这可能是一个重要的区别。此外,类型转换规则略有不同。
2赞 Green Cloak Guy 6/1/2021 #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

因此,等于 ,或 92;而等于 ,或 5。23 << 20101110023 >> 200000101

你也可以把它想象成使用2的幂进行整数乘法或除法:

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