2

我尝试编译并运行以下代码

public static void main(String... args) {
    int x = 1 | 2 | 3 | 4;
    //int x = 1 | 1 | 1 ;
    //int x = 1 | 2 ;
    //int x = 2 | 1 ;
    System.out.println(x);
}

我在 dot net 中尝试过,但它不工作它为什么在 java 中工作?如何评估此代码以产生答案?

4

3 回答 3

7
1 | 2 = 00000001 | 00000010 = 00000011 = 3
3 | 3 = 00000011 | 00000011 = 00000011 = 3
3 | 4 = 00000011 | 00000100 = 00000111 = 7
于 2013-05-15T10:37:36.900 回答
5

这在 Java 中称为按位运算符。它对操作数的位进行操作。按位 | 运算符执行按位包含 OR 运算。

如果您观察低位:

1 - 0001
2 - 0010
3 - 0011
4 - 0100

它们中的每一个都会产生 Biwise OR 01117您可以参考JLS 15.22.1了解更多信息。

于 2013-05-15T10:36:59.690 回答
0

这是按位包含 OR或运算符的示例。结果将是 7。

1 - 0001
2 - 0010
3 - 0011
4 - 0100
---------
7 - 0111

我不知道你是如何在“dot net”中使用它的,但它应该可以工作。这个读数证明了这一点

于 2013-05-15T10:37:24.460 回答