Python位運算 與 或 異或 左移右移

2022-06-15 22:21:26 字數 1305 閱讀 4482

與運算規則:

1 & 1 = 1

0 & 1 = 0

0 & 0 = 0

以1和5的與運算為例:

1的二進位制為 001

5的二進位制為 101

僅最後一位都為1,所以結果為001

1 & 5 = 1
或運算規則:

1 | 1 = 1

1 | 0 = 1

0 | 0 = 0

以4和6的或運算為例:

4的二進位制為 100

6的二進位制為 110

僅最後一位都為0,所以結果為110

4 | 6 = 6
異或運算規則:

1 ^ 0 = 1

1 ^ 1 = 0

0 ^ 0 = 0

以9和3的異或運算為例:

9的二進位制為 1001

3的二進位制為 0011

不相同的位數為右數第2、4位,所以結果為1010

9 ^ 3 = 10
左移

x << y的含義為:將x的二進位制數向左移動y位

以1為例,

1向左移動一位後得二進位制數10,向左移動二位後得二進位制數100

1 << 1 = 2

1 << 2 = 4

右移

x >> y的含義為:將x的二進位制數向右移動y位

以5為例,

5的二進位制數101向右移動一位後得二進位制數10,向右移動二位後得二進位制數1

5 >> 1 = 2

5 >> 2 = 1

憑藉以上內容可解出leetcode 461.漢明距離

def hammingdistance(x, y):

# 題目要求求出二進位制位不同位置的數目

# 首先通過異或運算得出不同的位數

xor = x ^ y

# 記錄距離的變數dis

dis = 0

# 因對變數xor進行右移操作,當xor不為0時進行以下操作

while xor:

# 通過&1的操作,可判斷二進位制數的有數第一位是否為1

if xor & 1:

# 如果為1,dis變數+1

dis += 1

# 對經過異或運算後的變數xor進行右移

xor = xor >> 1

return dis

位運算(與 或 異或 取反 右移 左移)

1 按位與 對兩個數進行操作,然後返回乙個新的數,這個數的每個位都需要兩個輸入數的同一位都為1時才為1,如下圖 a b 結果為 12,二進位制為 0000 1100 2 按位或 比較兩個數,然後返回乙個新的數,這個數的每一位設定1的條件是兩個輸入數的同一位都不為0 即任意乙個為1,或都為1 如下圖 ...

與 ,或 ,異或 ,左移 ,右移》

目錄參加運算的兩個資料,按二進位制位進行 與 運算。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩位同時為 1 結果才為 1 否則為0 與運算 的特殊用途 1 清零。如果想將乙個單元清零,即使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零。2 取乙個數中指定位 方法...

按位與 或 異或運算

一 按位與 1 概念 參加運算的兩個物件,按二進位制位進行 與 運算,負數按補碼形式參加按位與運算。2 運算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩位同時為 1 結果才為 1 否則為0 有0則0 例如 3 5 1,即 0000 0011 0000 0101 0000 0001 3...