关于课堂观察

时间:2012-05-05 06:18:30

标签: java

我今天观察到通过在简单的java类中编写以下行

System.out.println(010|4);

给出'12'的输出,其背后的逻辑是什么,请指教。

4 个答案:

答案 0 :(得分:2)

|bitwise inclusive OR运算符,0108的八进制,二进制是10004是{{1}在二进制文件中,所以当100中的您或每个位与1000中的相应位相同时,您将获得0100的二进制1100

答案 1 :(得分:2)

当数字前缀为0时,它被视为基数8 意思是010 = 0 *(8 ^ 0)+ 1 *(8 ^ 1)= 8

|是按位OR运算

010 | 4与8 | 4

相同
1000
OR
0100
=
1100
= 12

答案 2 :(得分:1)

|bitwise inclusive OR运算符,010是八进制的8,所以8 | 4 = 12。

答案 3 :(得分:1)

010|4

这里有两件事值得注意 -

  1. 010 - 整数从0开始。这是一个八进制数。 ex 011 -> 9 (0 8^1 8^0 =9)
  2. | - 按位或| b它告诉1,如果任何一位是1. ex 010 | 010 -> 8 (010)
  3. 在这种情况下

     010 | 4 -> 010 | 04 -> 014 
     014 which is 12 in base of 10