python - Python 的按位求补运算符 (~ 代字号) 是如何工作的?

标签 python operators bitwise-operators complement

为什么~2等于-3? ~ 运算符如何工作?

最佳答案

请记住,负数存储为正数的补码。作为示例,以下是 -2 的二进制补码表示形式:(8 位)

1111 1110

获得此值的方法是采用数字的二进制表示形式,取其补码(反转所有位)并加一。两个以 0000 0010 开头,通过反转位我们得到 1111 1101。加一得到上面的结果。第一位是符号位,表示负数。

那么让我们看看如何得到 ~2 = -3:

这里又是两个:

0000 0010

只需翻转所有位,我们就可以得到:

1111 1101

那么,-3 在二进制补码中是什么样子?从正3开始:0000 0011,将所有位翻转为1111 1100,加一成为负值(-3),1111 1101。

因此,如果您简单地反转 2 中的位,就会得到 -3 的二进制补码表示形式。

补码运算符 (~) 只是翻转位。由机器来解释这些位。

关于python - Python 的按位求补运算符 (~ 代字号) 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791328/

相关文章:

python - 检查可变时间范围内的列值是否唯一

python - 当我们在Django中使用opencv时如何处理请求

(++variable) 和 (variable++) 之间的 C 区别

c - C中类型转换和按位运算的结果取决于顺序

java - 在 sqlite3 数据库中读取 gzipped 字符串(python 写入,Java Android 读取)

c++ - 如何从 std::istream 中读取数据(使用运算符>>)?

c++ - 有人可以解释这个 C++ 逗号运算符短路示例吗?

c - 对异常大小的单词使用 mask

c++ - 'if((mask | u)==u)' 是什么意思?

python - 带有 Google App Engine 本地开发服务器的 Matplotlib