1
有人可以解釋這個java按位運算符的行爲嗎?按位運算符意外行爲
System.out.println(010 | 4); // --> 12
System.out.println(10 | 4); // --> 14
謝謝!
有人可以解釋這個java按位運算符的行爲嗎?按位運算符意外行爲
System.out.println(010 | 4); // --> 12
System.out.println(10 | 4); // --> 14
謝謝!
第一個數字被解釋爲八進制。所以010 == 8
。
從出發,很容易看到,這
8d | 4d == 1000b | 0100b == 1100b == 12d
第二個數字被解釋爲小數,這產生
10d | 4d == 1010b | 0100b == 1110b == 14d
(凡d
表示的十進制數和b
表示二進制)
此外它與http://stackoverflow.com/questions/565634/integer-with-leading-zeroes ...有關,但我沒有認爲這是到目前爲止的原因。謝謝。 – Rafael 2013-02-10 15:38:33
010創建八進制文字。 – 2013-02-10 15:33:17
這與按位操作無關,正如您自己的示例所示。 – 2013-02-10 15:36:09