python-3.x - ~ Python 3 中的二进制补码

标签 python-3.x bitwise-operators

只是对二进制补码的工作方式有疑问。
例如(在python中):

a = 60
print(~a)

给出一个输出:-
-61

不是 60 的二进制补码是 :
a = 0011 1100
~a  = 1100 0011

应该不是-60 ?

我知道我错了,但为什么它向前移动到 -61 ?

最佳答案

~是一个按位取反运算符和 it acts exectly as defined :

The bitwise inversion of x is defined as -(x+1).



这就是 two's complement representation 的按位反转的简单方式一个整数的作品。

二进制补码轮很好地形象化了这一点:

enter image description here

如您所见,1 的按位反转是 -2,2 的按位反转是 -3,...,60 的按位反转将是 -61。

关于python-3.x - ~ Python 3 中的二进制补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55145028/

相关文章:

python - 将帧合并为一个视频时如何避免系统死机

python - 在输入()/raw_input()期间退出()后终端处于损坏状态(不可见文本/无回显)

java - 不明白这些按位运算符如何对字节和整数进行操作

java - "com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value"与按位 'OR'

javascript - 按位求反和按位异或 1 不等价?

python - 字符串到单词元组

python - 使用每月日期计算累积流失率 - 日期问题很重要

python-3.x - 如何为 BigQuery 的 Google Cloud 远程实例提供身份验证?

c++ - 获取 0 或依赖于 bool 值的值的好方法是什么?

algorithm - 在 C 中有效地生成所有整数 n,其中 n&m==n(m 是给定的整数)