Date :2019-08-11
1. 按位與
按位與是針對二進制數的操作,指將兩個二進制數的每一位都進行比較,如果兩個相應的二進位都爲 1 則此位爲 1,否則爲 0。在本例中, 5 的二進制表達爲 101 , 3 的二進制表達爲 11 (爲補全位數進行按位操作寫作 011 ),則按位與操作後的結果爲001 ,對應的十進制數爲 1 。
詳細: 3 & 5 —— 00000011 & 00000101 = 0000 0001 即爲 1
2. 按位或
按位或是針對二進制數的操作,指將兩個二進制數的每一位都進行比較,如果兩個相應的二進位有一個爲 1 則此位爲 1,否則爲 0。在本例中, 101 與 011 進行按位或操作後的結果爲 111 ,對應十進制數爲 7 。
詳細:3 | 5 —— 00000011 | 0000 0101 = 0000 0111 即爲7
3. 按位異或
按位異或是針對二進制數的操作,指將兩個二進制數的每一位都進行比較,如果兩個相應的二進位不同則此位爲 1,相同爲 0。在本例中, 101 與 011 進行按位異或操作的結果爲 110 ,對應十進制數爲 6 。
詳細例子:
a = 10
b = 100
a = a^b # a = 110
b = b^a # b = 10
a = a^b # a = 100
解釋:(此處的例子證明a b 經過三次異或操作之後,可以實現兩者的數值的交換)
a的二進制 1010 b的二進制 1100100
a : 0 0 0 1 0 1 0
b : 1 1 0 0 1 0 0
a^b: 1 1 0 1 1 1 0 ----> 110 (異或:相等爲0,不等爲1)
b : 1 1 0 0 1 0 0
b^a: 0 0 0 1 0 1 0 ---->10
a : 1 1 0 1 1 1 0
a^b: 1 1 0 0 1 0 0 ---->100
4. 按位取反
按位取反也稱作“按位取非”或“求非”或“取反”,沈潔元譯本譯作“按位翻轉”,是針對二進制數的操作,指將兩個二進制數的每一二進位都進行取反操作, 0 換成 1 , 1 換成0 。只需按照給出的公式記憶 ~6 = -(x+1)=-7
詳細:~6 = -(x+1)=-7
5. 左移
左移(<<)(由<<右側的數字決定左移幾位,高位丟棄,低位補0)
eg:print(2<<2) 返回8=1000
6. 右移
右移(>>)(由<<右側的數字決定右移幾位,高位丟棄,低位補0)
eg:print(13>>2) 返回3=011