"〜"的含义是什么?和"& =" python中的符号?

时间:2014-03-18 14:31:07

标签: python notation

我在python组中看到以下内容:

>> bookStyle = aui.AUI_NB_DEFAULT_STYLE
>> bookStyle &= ~(aui.AUI_NB_CLOSE_ON_ACTIVE_TAB)

你能解释第二个陈述吗? &=~做了什么?

5 个答案:

答案 0 :(得分:4)

根据bitwise operators documentation

  

一元~(反转)运算符产生其普通或长整数参数的按位反转。 x的按位求逆定义为 - (x + 1)。它仅适用于整数。

&=可以像这样理解

bookStyle = bookStyle & ~(aui.AUI_NB_CLOSE_ON_ACTIVE_TAB)

因此,我们基本上反转aui.AUI_NB_CLOSE_ON_ACTIVE_TAB的值,然后检查反转值中的所有ON位是否也在bookStyle中为ON。

使用32位算术可以更好地理解~

5可以像32位二进制一样表示

print format(5 & (1 << 32) - 1, "032b")
# 00000000000000000000000000000101

现在,当我们~5时,结果将是

print ~5
# -6

所以,让我们在二进制文件中打印-6

print format(-6 & (1 << 32) - 1, "032b")
# 11111111111111111111111111111010

如果我们比较这些值,

00000000000000000000000000000101
11111111111111111111111111111010

你了解内部究竟发生了什么。

答案 1 :(得分:0)

那些是bitwise operators

  

x&amp; y 是“按位和”。

     

~x 返回x的补码 - 通过将每个1切换为0并将每个0切换为1来获得的数字。

答案 2 :(得分:0)

~x是一个一元运算符,相当于数字的(-x)-1

x &= y

相当于

x = x & y

其中&代表二进制和。

答案 3 :(得分:0)

~是二元转换运算符。

bob &= lucybob = bob & lucy的缩写版。基本上,按位AND并存储结果值。

更多相关信息 - Unary arithmetics and bitwise operations @Python docs

答案 4 :(得分:0)

(〜):二元一元补语运算符是一元的,具有'翻转'位的效果

例如:

a = 0011 1100
(~a ) will give -61 which is 1100 0011 in 2's complement form due to a signed binary  number

(&amp;):如果两个操作数都存在,二进制AND运算符会将一个位复制到结果中。

a = 0011 1100
b = 0000 1101
(a & b) will give 12 which is 0000 1100