检查我是否理解基本的Java按位操作

时间:2016-11-08 16:59:50

标签: java math binary bitwise-operators twos-complement

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

// 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& A的所有结果。 B; & =结果只有两者都存在。

我做对了吗?让我想起几乎完成2的补充。

至于为什么我列出了编译器设计,这个类是高级编程语言,该方法来自基于Java的C语言词法分析器。我们现在正在编写和解释。

1 个答案:

答案 0 :(得分:1)

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

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

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

  

据我所知,| =结果将包含所有的结果   A& A B;

是。如果A或B中的任何一个对于特定位具有1,或者如果两者都具有1,则结果位为1.

  

& =结果只包含两者中的结果。

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