python - 按位运算一元 ~(反转)

标签 python bit-manipulation

我对 ~ 运算符有点困惑。代码如下:

a = 1
~a  #-2
b = 15
~b  #-16

~ 是如何工作的?

我想,~a 会是这样的:

0001 = a
1110 = ~a 

为什么不呢?

最佳答案

你说得完全正确。这是 two's complement 的神器整数表示。

在 16 位中,1 表示为 0000 0000 0000 0001。反转后,您将得到 1111 1111 1111 1110,即 -2。同样,15 是 0000 0000 0000 1111。反转后,您将得到 1111 1111 1111 0000,即 -16。

一般来说,~n = -n - 1

关于python - 按位运算一元 ~(反转),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56094532/

相关文章:

Ruby bit banging,如何执行加法和负法

c - 使用 size_t 变量时循环没有结束

c - 按位逻辑运算符和移位运算符

c - 高效串联

python - 循环卡在最后一个条目 python

python - 使用插值和 alpha 将 imshow 保存为 pdf 时出现 Matplotlib 问题

python - 如何使用 LXML 解析损坏的 HTML

python - 从父目录导入脚本

python - 在python中按键/id划分行中的值

c++ - 给定硬币的所有可能总和