代码之家  ›  专栏  ›  技术社区  ›  James

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

  •  1
  • James  · 技术社区  · 8 年前

    类读取中的示例代码有以下代码:

    // 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;
    }
    

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

    B=0111011

    A|=B->1111 1111

    A&B->;0010 0000

    &结果将只有两个中存在的。

    我说得对吗?让我想起了做2的补码,几乎。

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Am_I_Helpful    8 年前

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

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

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

    &结果将只有两个中存在的。

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