10進位世界的迷失

最近,遇到了一個Bitwise Operators的問題,因為之前在開發的時候,幾乎都是10進度的處理,所以幾乎是算不出那個問題的答案。
問題大概就是
System.out.println(010|4);

後來查了一下,有關Bitwise Operators在SCJP是不考的(不過不會就是不會,就只能用猜的)

而實際的解法事實上有兩個部份,
一、Java中整數的表示式
二、Bitwise Operators的運算

在Java中,若是一般的數字,都是以10進位的方式計算,若是「0」開頭的值,就是8進位,「0x」開頭的就是16進位。

所以上述的「010」就代表8,若是「0x10」就是16囉。

而010 | 4 表示要將 8 跟 4進行Bitwise Operators中的OR計算,先把資料轉成2進位後,再計算

8的2進位是:00001000
4的2進位是:00000100
|) =================
計算的結果:00001100

所以結果是12

留言

熱門文章