私は今日、単純なJavaクラスで以下の行を書くことによってそれを観察していました
System.out.println(010|4);
'12'の出力を提供します。その背後にあるロジックは何ですか、アドバイスしてください。
私は今日、単純なJavaクラスで以下の行を書くことによってそれを観察していました
System.out.println(010|4);
'12'の出力を提供します。その背後にあるロジックは何ですか、アドバイスしてください。
|
はビット単位の包括的 OR演算子であり、010
は の 8 進数で8
あり、これは1000
2 進数で4
あり100
、2進数です。1000
0100
1100
12
数値の前に 0 を付けると、基数 8 と見なされ、010 = 0*(8^0) + 1*(8^1) = 8 を意味します。
| | はビットごとの OR 演算です
010|4 は 8|4 と同じです
1000
OR
0100
=
1100
= 12
010|4
ここで注目すべき2つのこと-
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
|
はビットごとの包括的 OR演算子で、010
8 進数では 8 なので、8 | 4 = 12。