什么是 |运算符在 Java 中做什么?

What is the | operator doing in Java?

我阅读了一些 Java 代码并遇到了 | 运算符。 任何人都可以在这种情况下操作员在做什么吗?

for (int i=0; i<8; i++) {
            x[i] = hexBytes[i*4]   << 24
                 | hexBytes[i*4+1] << 16
                 | hexBytes[i*4+2] << 8
                 | hexBytes[i*4+3];
}

就是按位或。有关详细信息,请参阅本文:https://www.baeldung.com/java-bitwise-operators

3.1 指的是这个特定的运算符。它还解释了左移 << 运算符

按位OR(和AND)可用于位处理。 AND 允许您提取一组位:int lowest8bits = 0xFFFFF & 0xFF;.

使用 OR 可以插入位。在上面的代码中,通过将它们移动到正确的位置并 OR 将它们插入到相同的 int 中。

                           10010010 byte
                  10010010 00000000 << 8
00000000 00000000 00000000 00010110 The int we're building
00000000 00000000 10010010 00010110 End result in int after OR

使用的运算符是:

  1. "<< (left shift)" :二进制左移运算符。左边的操作数 值向左移动由右边指定的位数 操作数。
    1. ">> (right shift)" :二进制右移运算符。左操作数的值向右移动由 右操作数。
    2. "|(按位或)":二进制或运算符复制一个位,如果它存在于任一操作数中。

在您的代码中:

hexBytes[i*4]   << 24

hexBytes[i*4] 的二进制值左移 24 位。与其他人相同,结果是或按位 |运算符。