&,|,^和〜都是python中的按位运算符。 &,^和|对我来说都很好 - 当我拿1 | 0时,我得到1.但是〜给了我奇怪的结果。 ~1给我-2,而0给我-1。这是因为我使用整数还是其他东西?我正在运行python 3。
我希望从〜0得到1,从〜1得到0(整数)。这可能吗?
答案 0 :(得分:5)
来自here
<强> ~x
强>
返回x的补码 - 通过将每个1切换为0并将每个0切换为1得到的数字。这与-x - 1相同。
在该声明的最后部分之后:
-1 - 1
确实等于-2
和
-0 - 1
确实等于-1
答案 1 :(得分:3)
这是因为the two's complement实现了整数。
如果从0000 0000
切换所有位(假设此处为8位整数,但对于较大的位仍然有效),则得到1111 1111
。在二的补码解释中,那是-1,因为要表示-1,你取1,反转所有位并加一:
0000 0001 (= 1)
-> 1111 1110 (inverted)
-> 1111 1111 (added one, now this is '-1')
第二个例子同样适用。