2012-05-05 91 views
2

我觀察今天通過寫下面的線在簡單的Java類關於一類

System.out.println(010|4); 

給「12」,什麼背後的邏輯,請大家指教的輸出觀察。

回答

2

|bitwise inclusive OR操作者,010是八進制爲8,這在二進制10004是二進制100,所以當你或1000與相應位0100每個比特你在1100二進制是12

+0

4是'二進制 –

+0

@HunterMcMillen感謝在100' – trutheality

2

當前綴0的數目,它被認爲是作爲基座8 意思010 = 0 *(8^0)+ 1 *(8^1)= 8

|是按位或運算

010 | 4是一樣的8 | 4

1000 
OR 
0100 
= 
1100 
= 12 
1
010|4 

這裏有兩個事情notable-

  1. 010 - 整數從0開始。它是一個八進制數。 ex 011 -> 9 (0 8^1 8^0 =9)
  2. | - 按位或| | B檢查告訴1如果任一比特爲1 ex 010 | 010 -> 8 (010)

在這種情況下

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