Python語言中的按位運算

2021-08-19 15:12:00 字數 1593 閱讀 6484

**)位操作是

程式設計

中對位模式

或二進位制數

的一元和二元操作. 在許多古老的

微處理器

上, 位運算比加減運算略快, 通常位運算比乘除法運算要快很多. 在現代

架構中, 情況並非如此:位運算的運算速度通常與加法運算相同(仍然快於乘法運算).

簡單來說,按位運算就把數字轉換為機器語言——二進位制的數字來運算的一種運算形式在計算機系統中,數值一律用補碼來表示(儲存)。

python中的按位運算子有:左移運算子(<<),右移運算子(>>),按位與(&),按位或(|),按位翻轉(~)。這些運算子中只有按位翻轉運算子是單目運算子,其他的都是雙目運算子。

解法:3的二進位制補碼是 11,  5的是101, 3&5也就是011&101,先看百位(其實不是百位,這樣做只是便於理解) 乙個0乙個1,根據(1&1=1,1&0=0,0&0=0,0&1=0)可知百位應該是0,同樣十位上的數字1&0=0,個位上的數字1&1=1,因此最後的結果是1.(這之後本來應該還有一步,因為我們現在得到的數值只是所求答案的補碼,但是因為正數的補碼即是它本身,所以就省略了。不過,下面的例子就不能省略最後這一步了).    

解法:-1的補碼是11111111,  -2的補碼是11111110, 11111111&11111110得到的結果是:11111110,這個是補碼,再轉化位原碼為100000010 (負數轉換位原碼的方法是減一取反),最後轉換為十進位制是 -2.

解法:-2的補碼是11111110,  6的補碼是110,   11111110&110,也就是11111110&00000110(這樣寫的目的是讓初學者能夠更好理解按位運算),按照上面的方法得到的結果是:110,轉化位十進位制就是6.

解法:10^101=111,二進位制111得到十進位制的結果是7.

-3^4

按位翻轉  ~

方法:將二進位制數+1之後乘以-1,x的按位翻轉是-(x+1). 注意,按位運算子是單目運算子.  -9 ,  1+~4是正確的,5~3就不對了.

這是更快捷的按位翻轉演算法,也可以按部就班每位按位取反(包括符號位),最後如果是負數再轉為原碼 

舉例:

~3 解法:   -  (-10+1)  =1 【即(b)10 - 1 = 01】  【此方法不涉及補碼】

或者:-2在計算機中儲存為補碼:1111 1110,按位取反得~1111 1110 = 0000 0001即為1

3<<2

解法:11向左移動兩位變為1100,即12 .

3>>2

解法:11向右移動兩位變為0.

10>>1

解法:10的二進位制是1010,向右邊移動一位是101,即5.

Python語言中的按位運算

本作品採用知識共享署名 非商業性使用 相同方式共享 2.5 中國大陸許可協議進行許可。位操作是程式設計 中對位模式 或二進位制數 的一元和二元操作.在許多古老的微處理器 上,位運算比加減運算略快,通常位運算比乘除法運算要快很多.在現代架構中,情況並非如此 位運算的運算速度通常與加法運算相同 仍然快於...

Python語言中的按位運算

位操作是程式設計中對位模式或二進位制數的一元和二元操作.在許多古老的微處理器上,位運算比加減運算略快,通常位運算比乘除法運算要快很多.在現代架構中,情況並非如此 位運算的運算速度通常與加法運算相同 仍然快於乘法運算 簡單來說,按位運算就把數字轉換為機器語言 二進位制的數字來運算的一種運算形式。在計算...

python按位符 Python語言中的按位運算子

按位運算子是把數字看作二進位制來進行計算的。python中的按位運算法則如下 按位與 bitwise and of x and y 舉例 5 3 1 解釋 101 11 相同位僅為個位1 故結果為 1 按位或 bitwise or of x and y 舉例 5 3 7 解釋 101 11 出現1的...