2018.9.11學習筆記
阿新 • • 發佈:2018-12-09
1 java中的異或和位運算子
^ 異或表示相同為false,不同為true;例如 true ^ false為true;true^true為false。
&& 和 & 他們所得到的結果相同,但是前者表示短路與,即如果左邊為false則右邊就不再執行,同理,|| 與 | 表示的意思相同
位運算子將所有的數都看作二進位制計算,此時8421口訣就很方便了。
上述位運算子都很簡單,但是按位取反有一定難度,這裡解釋一下^6如何求?
首先6的二進位制,00000000 00000000 00000000 00000110
取反 11111111 11111111 11111111 11111001(這裡得到的是補碼)
取反後我們發現這個數很大啊!!其實之前提到過,計算機計算都是按照補碼進行計算的,所以我們在這裡需要將補碼還原回去,補碼等於反碼+1,所以反碼等於補碼-1
反碼 11111111 11111111 11111111 11111000
原始碼 10000000 00000000 00000000 00000111
等於-7
一個數被另一個數據異或2次,這個數本身不變,例如System.out.println(5 ^ 10 ^ 10);結果還是5
面試題:交換2個變數