10進位世界的迷失
最近,遇到了一個Bitwise Operators的問題,因為之前在開發的時候,幾乎都是10進度的處理,所以幾乎是算不出那個問題的答案。
問題大概就是
後來查了一下,有關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
問題大概就是
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
留言