2013-05-15 20 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