2013-02-10 62 views
1

有人可以解釋這個java按位運算符的行爲嗎?按位運算符意外行爲

System.out.println(010 | 4); // --> 12 
System.out.println(10 | 4); // --> 14 

謝謝!

+3

010創建八進制文字。 – 2013-02-10 15:33:17

+1

這與按位操作無關,正如您自己的示例所示。 – 2013-02-10 15:36:09

回答

6

第一個數字被解釋爲八進制。所以010 == 8

從出發,很容易看到,這

8d | 4d == 1000b | 0100b == 1100b == 12d 

第二個數字被解釋爲小數,這產生

10d | 4d == 1010b | 0100b == 1110b == 14d 

(凡d表示的十進制數和b表示二進制)

+0

此外它與http://stackoverflow.com/questions/565634/integer-with-leading-zeroes ...有關,但我沒有認爲這是到目前爲止的原因。謝謝。 – Rafael 2013-02-10 15:38:33