一、為什麼需要位運算
在程序語言中,通過位運算可以對數字進行各種操作,如移位、按位與、按位或、按位異或等操作。這些操作在很多計算機應用中都非常有用,尤其是在二進制編碼和加密等方面。通過位運算可以使程序更加高效,並且減少代碼量。
位運算還可以處理大數據,例如一個long類型的數據,可以被分成多個int類型數據,進行高效的操作。此外,在網絡通信和硬件控制中,位運算也有很大的作用。
二、二進制數和位運算符
在位運算中,最基本的單位是二進制數和位運算符。Python中支持兩種二進制數的表示方法,一種是通過0b表示二進制數,例如:
a = 0b1011
另一種是通過bin()函數將十進制數轉換為二進制數,例如:
a = bin(11)
Python中支持7種位運算符,包括按位與(&)、按位或(|)、按位異或(^)、按位取反(~)、左移(<>)和無符號右移(>>>)。 這些符號在位運算中用於對二進制數進行各種操作。
三、按位與運算符
按位與運算符用於對兩個二進制數進行“與”比較。當兩個二進制數對應的位都為1時,結果為1,否則結果為0。例如:
a = 0b1011 b = 0b1101 c = a & b print(c) #輸出0b1001
上述代碼中,a & b得到的結果為0b1001。這是因為a和b的二進制數對應位上只有第二位為1,所以結果二進制數的第二位是1,其他位都是0。
四、按位或運算符
按位或運算符用於對兩個二進制數進行“或”比較。當兩個二進制數對應的位都為0時,結果為0,否則結果為1。例如:
a = 0b1011 b = 0b1101 c = a | b print(c) #輸出0b1111
上述代碼中,a | b得到的結果為0b1111。這是因為a和b的二進制數對應位上只有第一位是0,其他位都是1,所以結果二進制數的第一位是0,其他位都是1。
五、按位異或運算符
按位異或運算符用於對兩個二進制數進行“異或”比較。當兩個二進制數對應的位不同時,結果為1,否則結果為0。例如:
a = 0b1011 b = 0b1101 c = a ^ b print(c) #輸出0b0110
上述代碼中,a ^ b得到的結果為0b0110。這是因為a和b的二進制數對應位上只有第一位和第四位不同,所以結果二進制數的第一位和第四位是1,其他位都是0。
六、按位取反運算符
按位取反運算符用於對一個二進制數進行取反操作。例如:
a = 0b1011 b = ~a print(b) #輸出-12
上述代碼中,~a得到的結果為-12。這是因為Python中整數的二進制數是有符號的,取反後加上負號就是補碼。
七、左移運算符
左移運算符用於將一個二進制數的所有位向左移動指定的位數。向左移動使所有位數增加,移出的位數由0補齊。例如:
a = 0b1011 b = a << 2 print(b) #輸出0b101100
上述代碼中,a << 2得到的結果為0b101100。這是因為a的二進制數左移兩位後,在右邊用0補齊。
八、右移運算符
右移運算符用於將一個二進制數的所有位向右移動指定的位數。向右移動使所有位數減少,移出的位數被捨棄。如果二進制數是正數,在左邊用0補齊;如果是負數,在左邊用1補齊。例如:
a = 0b1011 b = a >> 2 print(b) #輸出0b10
上述代碼中,a >> 2得到的結果為0b10。這是因為a的二進制數右移兩位後,在左邊用0補齊。
九、無符號右移運算符
無符號右移運算符用於將一個二進制數的所有位向右移動指定的位數,移出的位數被捨棄。和右移運算符一樣,向右移動使所有位數減少,在左邊用0補齊。但是,不同的是,無符號右移運算符無論是正數還是負數,在左邊都用0補齊。例如:
a = 0b1011 b = a >>> 2 print(b) #輸出0b10
上述代碼中,a >>> 2得到的結果也為0b10。和右移運算符一樣,a的二進制數右移兩位後,在左邊用0補齊。
結束
在Python中,位運算符用於對數字進行各種有用的操作,包括移位、按位與、按位或、按位異或等操作。通過位運算可以使程序更加高效,並且減少代碼量。如果你對位運算還有更深的理解,可以通過實踐練習來掌握這些運算符的使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/247652.html