位操作语法问题Java

RoR*_*RoR 1 java

checker |= (1 << val);
Run Code Online (Sandbox Code Playgroud)

| =做什么?

1 << val将位向左移位,从而增加了值.

Ebo*_*ike 5

同样的checker = checker | (1 << val),就像checker += val是一样的checker = checker + val.

| 表示逻辑OR,即如果任一源值设置了一个位,它将在目标中设置.


tem*_*def 5

这段代码相当于

checker = checker | (1 << val)

这里|是按位OR运算符,它接收两个数字并返回一个新数字,其中1位设置在任何一个输入数字都有一位设置的位置.在|=你看到的是"按位OR与分配,"这就好比+=*=但是|.