Python 位運算子

2021-10-07 14:03:53 字數 1852 閱讀 5109

位運算子是對二進位制數進行操作。在 python 中,位運算的過程為:輸入數值 -> 原碼 -> 補碼 -> 位運算 -> 補碼 -> 原碼 -> 顯示數值。我們用位運算子對數值進行位運算,實際上是對該數值的補碼進行位運算。位運算的結果仍然是補碼,顯示該數值時需系統會先轉化為原碼,然後得出對應的數值。

)輸出結果為:10

解釋:-0b0110原碼為-0110,因為是負數,所以補碼為11010(新增一位表示符號)。而0b1111原碼為01111(新增一位表示符號),因為是正數,補碼和原碼相同,補碼為01111。兩者的補碼進行運算,得到結果01010,並且結果仍是補碼。輸出顯示時,系統會將該補碼轉化為原碼,然後得到真實數值。該補碼01010為正數*(最高位為符號位),所以原碼也為01010(最高位為符號位),解析為十進位制,即得到 10。

倘若兩個數字數不一樣長,如-0b0110 & 0b11111,第乙個負數長度為 4,而第二個正數長度為 5。那麼在進行為運算時,要先使兩者長度一致,即在長度較短的那個數前面補 0。則,第乙個負數補乙個 0 變為00110。最後,兩個數都在前面新增乙個符號位。第乙個數為負數,求補得到111010。第二個數為正數,求補不變。所以,此時位運算為111010 & 011111。符號位也要參與位運算,得到的結果就是011010。輸出顯示時,系統會將該補碼轉化為原碼,然後得到真實數值。該補碼011010為正數(最高位為符號位),所以原碼也為011010(最高位為符號位),解析為十進位制,即得到 26。

print(-

0b0110&15

)

輸出結果:10

解釋:十進位制數15的原碼為01111(新增一位表示符號),其餘過程同第乙個例子,不再贅述。

print(-

0b0110

&0x0f

)

輸出結果:10

解釋:十六進製制數0x0f的原碼為01111(新增一位表示符號),其餘過程同第乙個例子,不再贅述。

print(-

6&15)

輸出結果:10

print(-

6&0x0f

)

輸出結果:10

print(-

0x6&

0xf)

輸出結果:10

位運算子

功能<<

按位左移,左移n位相當於乘以2的n次方

>>

按位右移 ,左移n位相當於除以2的n次方

&按位與,如果兩個相應的二進位制位都為 1,則該位的結果值為 1;否則為 0。

l按位或 ,兩個相應的二進位制位中只要有乙個為 1,該位的結果值為 1;否則為 0。

^按位異或 ,若參加運算的兩個二進位制位同號則結果為0,異號則結果為1

~按位取反,用來對乙個二進位制數按位取反,即將0變1,將1變0。

python運算子 之位運算子

支援的資料型別有數字 集合 set 僅支援 交集 並集 不同集 其他型別都不支援位運算。按位運算子是把數字看作二進位制來計算的。位運算子作用於所有的位上,並且按位運算。python中按位運算法則如下 假設a 60,b 13 操作符描述例項 按位與運算子,當且僅當兩個運算元的某一位都非0時,該位的結果...

Python位運算子

按位運算子是把數字看作二進位制來進行計算的。python中的按位運算法則如下 下表中變數 a 為 60,b 為 13,二進位制格式如下 a 0011 1100 b 0000 1101 a b 0000 1100 a b 0011 1101 a b 0011 0001 a 1100 0011運算子 描...

python位運算子

python位運算子 python的位運算子是把數字看作二進位制來進行計算的。按位與 如果兩個二進位都為1,則該位結果為1,否則為0 按位或 只要乙個為1,則為1,否則為0 按位異或 兩個二進位相異為為1 即兩個二進位要相反 否則為0 取反 對資料的每個二進位制位取反,即把1變0,把0變1 左移動 ...