检查我是否了解基本的 Java 位运算

Checking to see if I understand basic Java bitwise operations

class 阅读中的示例代码具有以下代码:

// adjustSpacing will set bits in the spacing word to indicate the
//   type of spacing adjustment to be done, LEADING OR TRAILING.

public void adjustSpacing(int spacingValue)
{
    spacing |= spacingValue;
}

我以前从未使用过按位运算符,因为我从来不需要它们。我查看了如何进行这些操作,它们看起来很简单,但我想检查一下我是否真的拥有它。

A = 1010 1000

B = 0111 0111

A |= B -> 1111 1111

A &= B -> 0010 0000

据我所知,|= 结果将包含 A 和 B 中的所有结果; &= 结果将只有两者都存在的结果。

我没听错吗?几乎让我想起做 2 的补码。

至于我为什么列出编译器设计,这个class是高级编程语言,那个方法来自一个基于java的C语言词法分析器。我们现在正在介绍编译和解释。

按位 & 运算符执行按位与运算。

按位 ^ 运算符执行按位异或运算。

按位 |运算符执行按位包含或运算。

From what I can tell, the |= result will have all of the ones from both A & B;

是的。如果 A 或 B 中的某个特定位为 1,或者如果两者都为 1,则结果位为 1。

the &= result will have only the ones present in both.

再一次,是的。只有当 A 和 B 的位都为 1 时,结果位才为 1;否则 0.