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

标签 java assignment-operator

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

最佳答案

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

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。

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

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

关于java - Java 中 <<= 或 >>= 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67782113/

相关文章:

python - Numpy 数组和列表的多重赋值,一个奇怪的例子

c++ - 即使我重载分配也没有可行的重载 '='错误

java - 如何使用 UTF-8 读取 InputStream?

java - picasso 和 OkHttp

java - 来自 getAccessibleChild() 方法的 JTable 奇怪行为导致客户端代码中出现空指针

java - Android Studio - - MainActivity 中只有 1 个按钮播放声音

C#直接赋值给对象引用

java - 如何将现有的 Java keystore (.jks) 文件导入 Java 安装?

r - 分配给 is.na(clinical.trial$age)

C++:为我的类型定义了我自己的赋值运算符,现在 .sort() 不会对我的类型的 vector 起作用?