與運算規則:
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...