【问题标题】:What does <<= or >>= mean in Java?<<= 或 >>= 在 Java 中是什么意思?
【发布时间】:2021-08-19 06:06:24
【问题描述】:

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

【问题讨论】:

标签: java assignment-operator


【解决方案1】:

这是一个简短的表达式,就像i = i &gt;&gt; 2i = i &lt;&lt; 2一样

【讨论】:

  • 我怀疑他们理解这意味着什么。如果您扩展答案会更好,这样会更好。就像向左或向右移动一样。
  • 我的错,我是新人,我会重写我的答案
  • 当然,您可以根据需要多次edit 您的答案。人们倾向于对好的详细答案进行投票。
  • 这并不完全正确 - 使用复合赋值运算符,左侧只计算一次。这可能是一个重要的区别。另外,类型转换规则有点不同。
【解决方案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 &lt;&lt; 2 将等于 01011100,即 92;而23 &gt;&gt; 2 将等于00000101,或5。

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

  • a &lt;&lt; b 通常会产生与a * Math.pow(2, b) 相同的结果
  • a &gt;&gt; b 通常会产生与 a / Math.pow(2, b) 相同的结果

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多