1. 程式人生 > >2018.9.11學習筆記

2018.9.11學習筆記

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個變數