2013-05-15 22 views
2

我试图编译和运行下面的代码为什么java int允许使用|运营商?它如何评估?

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

我点网试图和它不工作如何在Java来它的工作?这个代码如何评估以产生答案?

+0

你期望得到什么? – johnchen902

+0

OR-ing整数无法使用什么未标注的.NET语言? – EJP

+2

这是一个按位或运算。 3 | 4 = 7 http://stackoverflow.com/questions/3312611/operator-in-java – david99world

回答

5

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

如果观察者低阶位:

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

Biwise他们每个人或会产生0111这是7。你可以参考JLS 15.22.1更多。

+0

完美的答案先生,+1 –

+0

雅权,我很困惑,当它不可能编译'点net'。对不起:( –

0

这是bitwise inclusive OR或运营商的示例。其结果将是7

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

我不知道你是怎么把它用在“点网”,但它应该工作。 This reading prove it

7
1 | 2 = 00000001 | 00000010 = 00000011 = 3 
3 | 3 = 00000011 | 00000011 = 00000011 = 3 
3 | 4 = 00000011 | 00000100 = 00000111 = 7 
+1

我建议将'00000011'换成'0b00000011' – johnchen902