Python的二進位制位運算

2021-06-20 04:50:39 字數 2063 閱讀 9355

python

語言能夠對整數進行逐位操作,它支援的運算子及含義如下所示: &

:按位與 |

:按位或 ^

:按位異或 ~

:取反

<<

:左移

>>

:右移

對於整型資料,各種位操作是對該資料的補碼進行的(正數的補碼與原碼相同,下面舉例皆以正數為例);對於長整型資料,由於其位寬不定,所以進行位運算時,認為其補碼的符號位向外無限擴充套件。下面對各運算子進行舉例說明: (

1)首先看取反

>>> ~1 -2

>>> ~0x0001 -2

>>> 

正整數1

,int

型是32

位的,就是

00000000 00000000 00000000 00000001

求反變為

11111111 11111111 11111111 11111110

,這正好是

-2的補碼。同樣十六進製制的

0x0001

結果是一樣的。 (

2)按位與

>>> 1&2 0

>>> 1&3 1

>>> 

對於按位與,就是對參加運算的兩個整數的補碼逐位進行邏輯與運算,即參加運算的兩個運算量,如果兩個相應位都為

1,則該位的結果為

1,否則為0。

(2)按位或

>>> 1|1 1

>>> 1|2 3

>>> 

對於按位或,就是對參加運算的兩個數字的補碼逐位進行邏輯或運算,即參加運算的兩個運算量,只要兩個相應位中有乙個為

1,那麼該位的結果為

1;只有兩個相應位都為

0時,該位的結果才為0。

(3)按位異或

>>> 1^1 0

>>> 1^2 3

>>> 

對於按位異或,就是對參加運算的兩個數字的補碼逐位進行邏輯異或運算,即參加運算的兩個運算量,如果兩個相應位相同,那麼該位的結果為

0;如果兩個相應位不同即相異,那麼該位的結果為1。

(4)左移運算

>>> 1<<2 4

>>> 

對於左移運算,就是將乙個數的二進位制位整體向左移若干位,移位後在低位補零,高位溢位部分捨棄。所以

1<<2

就是把整數

1的二進位制補碼

00000000 00000000 00000000 00000001

整體左移

2位,捨棄溢位的高位並在低位補零後得到結果

00000000 00000000 00000000 00000100

,正好是十進位制數

4。實際上,將乙個數左移幾位,就相當於將這個數乘以

2的幾次冪。 (

5)右移運算

>>> 4>>2 1

>>> 

對於右移運算,就是將乙個數的二進位制位整體向右移若干位,如果該數為正數,移位後的低位溢位部丟棄,高位補零;如果該數為負數,則移位後的低位溢位部丟棄,高位補

1,以保持符號不變。所以

4>>2

就是把正整數

4的二進位制補碼

00000000 00000000 00000000 00000100

整體右移

2位,捨棄溢位的低位並在高位補零後得到結果

00000000 00000000 00000000 00000001

,正好是十進位制數

1。實際上,將乙個數右移幾位,就相當於將這個數除以

2的幾次冪。

在優先順序方面,取反運算子~跟算術運算子中的單目運算子(即只有乙個運算元參加運算)同級,並且是所有位運算子中優先順序最高的;然後是移位運算子(左移

<<

和右移》

),它們比取反運算子和算術運算中的加減運算子低;最後是逐位與、或和異或運算子。各位運算子按照優先順序有高到低排列如下所示:

取反運算子

>左移運算子

>右移運算子

>按位與運算子

>按位異或運算子

>按位或運算子

在位運算子中,取反運算子(單目運算子)~的結合性是從右向左結合,其餘雙目運算子的結合性是從左向右結合。

Python的二進位制位運算

python語言能夠對整數進行逐位操作,它支援的運算子及含義如下所示 按位與 按位或 按位異或 取反 左移 右移對於整型資料,各種位操作是對該資料的補碼進行的 正數的補碼與原碼相同,下面舉例皆以正數為例 對於長整型資料,由於其位寬不定,所以進行位運算時,認為其補碼的符號位向外無限擴充套件。下面對各運...

二進位制位運算

與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...

二進位制位運算

一 按位與 位全為1,結果才為1 0 0 0 0 1 0 1 0 0 1 1 1 特殊用法 清零。如果想將乙個單元清零,就是使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零 取乙個數中的指定位。如x 10101110要取x的低4位,用x 00001111 00001110即可 二 按...