Python 位运算操作符
Python的位运算操作符通常与整数类型对象一起使用。然而,它不是将对象作为一个整体处理,而是将其作为一串位处理。在字符串中,对每个位执行不同的操作。
Python有六个位运算操作符 -
&
、|
、^
、~
、<<
和>>
。所有这些操作符(除了~)都是二元的,即它们在两个操作数上进行运算。每个操作数都是一个二进制位(1或0)。
Python位与操作符(&
)
位与操作符与逻辑与操作符类似。只有当两个位操作数都为1(即True)时,它才返回真。所有的组合都是-
当您将整数用作操作数时,两个整数将被转换为等效的二进制形式,并且& 操作将在每个数的对应位上执行,从最低有效位开始,向最高有效位方向进行。
让我们分别将两个整数60和13赋值给变量a和b。
会产生以下结果 输出 −
要理解Python是如何执行这个操作的,请获取每个变量的二进制等价物。
以下是生成的输出:
输出 −
为了方便起见,每个数字使用标准的8位格式,所以”a”是00111100,”b”是00001101。让我们手动对这两个数字的每个对应位进行AND操作。
将结果二进制数转换回整数。你将得到12,这是之前获得的结果。
Python 位或运算符 (|
)
符号 |
(称为 管道
)是位或运算符。如果任何位操作数为1,结果为1,否则为0。
将a=60和b=13带入|
操作,结果为61,求它们的二进制表示。
它将产生以下 输出 −
要手动执行|
操作,请使用8位格式。
将二进制数转换回整数以核对结果 –
Python 二进制 XOR 运算符 (^
)
XOR 是“异或”的缩写,它意味着对两个位进行 OR 运算的结果只有在只有一个位为 1 时才会是 1。
让我们对a=60和b=13执行XOR运算。
它将产生以下 输出 −
我们现在手动执行位异或操作。
int()函数显示00110001为49。
Python 二进制 NOT 运算符 (~
)
此运算符是逻辑 NOT 运算符的二进制等效形式。它会翻转每个位,将 1 替换为 0,将 0 替换为 1,并返回原始数的补码。Python 使用二进制补码方法。对于正整数,补码可以通过简单地翻转位来获得。对于负数 -x,它使用 (x-1) 的位模式,并对所有位进行补码 (从 1 切换到 0 或从 0 切换到 1)。因此: (对于 8 位表示)
对于a=60,它的补数是−
它将产生以下 输出 –
Python 左移位运算符(<<
)
左移位运算符通过右侧的<<
符号将最高有效位向右移动了指定的位数。因此,x << 2
会将二进制表示的x向右移动两位。 让我们对60进行左移位运算。
它将产生以下 输出 −
这个是如何发生的?让我们使用60的二进制等价物,并将其左移2位。
将二进制转换为整数。它为240。
Python 右移运算符 (>>
)
右移运算符将最低有效位向左移动,移动的位数由 >>
符号右侧的数字指定。因此,x >> 2
将二进制表示的 x 向左移动两位。让我们对 60 进行右移运算。
它将产生以下 输出 −
手动右移60的操作如下所示:-
使用int()函数将以上二进制数字转换为整数。它是15。