2

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

System.out.println(010|4);

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

4

4 回答 4

2

|按位包含 OR运算符,010是八进制 for 8,它是1000二进制的,4100二进制的,所以当你或每个位1000与对应的位在0100你得到1100的二进制是12

于 2012-05-05T06:26:49.803 回答
2

当您在数字前加上 0 时,它被视为以 8 为基数,即 010 = 0*(8^0) + 1*(8^1) = 8

| 是按位或运算

010|4 与 8|4 相同

1000
OR
0100
=
1100
= 12
于 2012-05-05T06:28:32.373 回答
1

|按位包含 OR运算符,010八进制为 8,所以 8 | 4 = 12。

于 2012-05-05T06:23:26.233 回答
1
010|4

这里有两件事值得注意 -

  1. 010 - 整数以 0 开头。它是一个八进制数。ex 011 -> 9 (0 8^1 8^0 =9)
  2. | - 按位或 a | b 它告诉 1 如果任一位为 1。ex 010 | 010 -> 8 (010)

在这种情况下

 010 | 4 -> 010 | 04 -> 014 
 014 which is 12 in base of 10
于 2012-05-05T06:43:42.730 回答