^表示二進制異或運算
如下表(相同為0,不同為1),顯然異或運算作為一種邏輯運算,有對稱性(a^b=b^a):
從左至右進行比對,不足為則用0補缺:
對於 ^ 兩邊的數字都是正數則直接對比計算即可
例如:
7 ^ 10
二進制:0111 ^ 1010
輸出為:1101=13
9 ^ 8
二進制:1001^1000
輸出為:0001即為1
若一邊或兩邊出現負數,則需要進行負數的轉碼
轉碼原理:負數原碼與補碼之間相互轉換
例:
-1 ^ -32
-1 二進制為 -1
而-1在計算機中被這樣轉換
原碼:1000 0001
反碼:1111 1110
補碼:1111 1111
-32 二進制為 -100000
而-1在計算機中被這樣轉換
原碼:1010 0000
反碼:1101 1111
補碼:1110 0000
-1 ^ -32 => 31 # 1111 1111 ^ 1110 0000 => 00011111 =>31
<< 左移動運算符:
運算數的各二進位全部左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0;
-1 << 5 => -100000 #-100000 = -32
另還有>>右移動運算符,原理一致
其他運算符
a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011