繁体   English   中英

〜1和〜0在python 3中给出奇怪的结果

[英]~1 and ~0 giving strange results in python 3

&,|,^和〜都是python中的按位运算符。 &,^和| 对我来说一切正常-当我取1 | 0时,我得到1。但是〜给我奇怪的结果。 〜1给我-2,〜0给我-1。 这是因为我使用整数还是什么? 我正在运行python 3。

我希望从〜0得到1,从〜1得到0(整数)。 这可能吗?

这里

~x

返回x的补数-通过将每个1切换为0以及将每个0切换为1获得的数字。这与-x-1相同。

在该语句的最后一部分之后:

-1 - 1确实等于-2

-0 - 1确实等于-1

这是因为整数的二进制补码实现。

如果将所有位从0000 0000切换(假设此处为8位整数,但对于较大的整数仍然有效),则得到1111 1111 在二的补码解释中,其值为-1,因为要表示-1,您需要将1取反,然后将所有位加1:

   0000 0001 (= 1)
-> 1111 1110 (inverted)
-> 1111 1111 (added one, now this is '-1')

第二个示例也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM