我今天观察到通过在简单的java类中编写以下行
System.out.println(010|4);
给出'12'的输出,其背后的逻辑是什么,请指教。
答案 0 :(得分:2)
|
是bitwise inclusive OR运算符,010
是8
的八进制,二进制是1000
,4
是{{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
这里有两件事值得注意 -
ex 011 -> 9 (0 8^1 8^0 =9)
ex 010 | 010 -> 8 (010)
在这种情况下
010 | 4 -> 010 | 04 -> 014
014 which is 12 in base of 10