python中的按位與 +按位或+ 按位反+異或運算 +左移+右移

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章