我今天观察到,通过在一个简单的 java 类中编写以下行
System.out.println(010|4);
给出 '12' 的输出,这背后的逻辑是什么,请指教。
|
是按位包含 OR运算符,010
是八进制 for 8
,它是1000
二进制的,4
是100
二进制的,所以当你或每个位1000
与对应的位在0100
你得到1100
的二进制是12
。
当您在数字前加上 0 时,它被视为以 8 为基数,即 010 = 0*(8^0) + 1*(8^1) = 8
| 是按位或运算
010|4 与 8|4 相同
1000
OR
0100
=
1100
= 12
|
是按位包含 OR运算符,010
八进制为 8,所以 8 | 4 = 12。
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