Python 简明教程
Python - Bitwise Operators
Python Bitwise Operators
Python 有六个按位运算符 - &、|、^、~、<< 和 >>。除了 ~ 之外,所有这些 operators 在本质上都是二进制的,因为它们对两个操作数进行操作。每个操作数都是二进制数字(位)1 或 0。
以下是 Python 中的按位运算符 -
-
Bitwise AND Operator
-
Bitwise OR Operator
-
Bitwise XOR Operator
-
Bitwise NOT Operator
-
Bitwise Left Shift Operator
-
Biwtise Right Shift Operator
Python Bitwise AND Operator (&)
按位 AND 运算符有点类似于逻辑与运算符。仅当两个位操作数均为 1(即 True)时,它才返回 True。所有组合如下所示:
0 & 0 is 0
1 & 0 is 0
0 & 1 is 0
1 & 1 is 1
当您使用整数作为操作数时,这两个整数都会转换为等效的二进制,& 操作针对每个数字的对应位执行,从最低有效位开始朝最高有效位移动。
Example of Bitwise AND Operator in Python
我们取两个整数 60 和 13,并将它们分别赋值给 variables a 和 b。
a=60
b=13
print ("a:",a, "b:",b, "a&b:",a&b)
它将生成以下 output −
a: 60 b: 13 a&b: 12
要了解 Python 如何执行操作,请获取每个变量的二进制等效值。
print ("a:", bin(a))
print ("b:", bin(b))
它将生成以下 output −
a: 0b111100
b: 0b1101
为方便起见,为每个数字使用标准 8 位格式,这样“a”就是 00111100,“b”就是 00001101。让我们手动对这两个数字的每个对应位执行 and 操作。
0011 1100
&
0000 1101
-------------
0000 1100
将结果二进制值转换回整数。您将得到 12,这就是之前获得的结果。
>>> int('00001100',2)
12
Python Bitwise OR Operator (|)
“|”符号(称为 pipe )是按位 OR 运算符。如果任何一位操作数为 1,则结果为 1,否则为 0。
0 | 0 is 0
0 | 1 is 1
1 | 0 is 1
1 | 1 is 1
Example of Bitwise OR Operator in Python
取 a=60、b=13 的相同值。“|”操作的结果为 61。获得它们的二进制等效值。
a=60
b=13
print ("a:",a, "b:",b, "a|b:",a|b)
print ("a:", bin(a))
print ("b:", bin(b))
它将生成以下 output −
a: 60 b: 13 a|b: 61
a: 0b111100
b: 0b1101
要手动执行“|”操作,请使用 8 位格式。
0011 1100
|
0000 1101
-------------
0011 1101
将二进制数转换回整数以比较结果 −
>>> int('00111101',2)
61
Python Bitwise XOR Operator (^)
术语 XOR 代表或排除。这意味着如果只有其中一个位为 1,则对两个位执行或运算的结果将为 1。
0 ^ 0 is 0
0 ^ 1 is 1
1 ^ 0 is 1
1 ^ 1 is 0
Python Bitwise NOT Operator (~)
这个运算符是逻辑 NOT 运算符的二进制等价项。它会翻转每个位,使 1 变成 0,0 变成 1,并返回原始数字的补数。Python 使用 2 的补码方法。对于正整数,可以通过简单地颠倒位来获得它。对于负数 -x,它使用 (x-1) 的位模式来编写,并且所有这些位都进行了补码(将 1 转换为 0 或 0 转换为 1)。因此:(对于 8 位表示)
-1 is complement(1 - 1) = complement(0) = "11111111"
-10 is complement(10 - 1) = complement(9) = complement("00001001") = "11110110".