【发布时间】:2017-03-22 09:48:12
【问题描述】:
类阅读中的示例代码具有以下代码:
// 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 的补码。
至于我为什么列出编译器设计,这个类是高级编程语言,该方法来自基于 Java 的 C 语言词法分析器。我们现在正在讨论编译和解释。
【问题讨论】:
-
您可以只编写代码并打印结果吗?
-
按位运算用作布尔运算,但对于每个位而不是逻辑值。因此,
&将在两个源位都为 1 时将其设置为 1,如果至少有一个源位为 1,|将其设置为 1。无论如何,这与 2 的补码没有任何共同之处。跨度>
标签: java math binary bitwise-operators twos-complement