Python 中 &= 运算符是做什么用的?
在 Python 中,&=
是一个复合位运算符,它可以对变量进行按位与运算,然后将结果赋值给该变量。&
运算是按位与运算,即将两个数的二进制进行逐位比较,只有都是 1 的位才为 1,否则为 0。
下面是一个简单的示例:
x = 13 # 二进制为 1101
x &= 7 # 二进制为 0111
print(x) # 输出为 5,二进制为 0101
在上面的示例中,将 x
的值与 7
进行按位与运算,得到结果 5
,再将 5
赋值回 x
中。这样,x
就被更新为 5
。
当然,使用 &=
运算符的情况不止于此。下面我们将介绍使用 &=
运算符的两个常见用例。
阅读更多:Python 教程
用例一:清除二进制位
有时我们需要清除二进制中指定位置的值。假设我们想要清除二进制数中最后两位,我们只需要将该数与一个二进制值 1111...1100
进行按位与运算即可。因为只有最后两位与 00
相与会得到 00
,其他位与 11
相与都会得到原来的值。
下面是一个简单的示例:
x = 0b110101 # 二进制为 110101
x &= 0b11111100 # 二进制为 11111100
print(bin(x)) # 输出为 0b110100,即二进制的110100
在上面的示例中,我们将 x
的值与二进制数 1111...1100
(即数字 252
)进行按位与运算,得到二进制数 110100
,也就是我们期望得到的结果。
用例二:设置二进制位
有时我们需要将指定的二进制位设置为1。对于这种情况,我们可以将该位与二进制数 0000...0100
进行按位或运算。因为只有该位与 1
相或会得到 1
,其他位与 0
相或都会得到原来的值。
下面是一个简单的示例:
x = 0b110101 # 二进制为 110101
x |= 0b00000100 # 设置第三位为1
print(bin(x)) # 输出为 0b111101,即二进制的111101
在上面的示例中,我们将 x
的第三位与二进制数 0000...0100
(即数字 4
)进行按位或运算,得到二进制数 111101
,也就是我们期望得到的结果。
结论
&=
运算符是 Python 中的一个复合位运算符,可以对变量进行按位与运算,然后将结果赋值给该变量。使用 &=
运算符可以很方便地在二进制操作中清除或设置指定的位。