按位运算符意外行为

时间:2013-02-10 15:31:37

标签: java bitwise-operators

有人可以解释这个java按位运算符行为吗?

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

谢谢!

1 个答案:

答案 0 :(得分:6)

第一个数字被解释为八进制。所以010 == 8

从那开始,很容易看出,

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

第二个数字被解释为十进制数,产生

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

(其中d表示十进制数,b表示二进制数。)