Python 就地补码运算符

标签 python bitwise-operators

Python 有常见的按位运算符,如 ~&| 等,以及就地运算符如 + =&= 等来简化表达式,例如:

a = a & 34234
a = a + 577

致:

a &= 34234
a += 577

尽管补码运算符 ~ 是一元函数,并且不遵循相同的结构,因为它不与两个值一起使用(例如 a34234 ),这样的表达式可以用另一种类型的运算符来简化吗?

a = ~a # not bad at all

# Still easy to code but seems redundant
self.container.longVariableName.longName = ~self.container.longVariableName.longName

最佳答案

这非常晦涩难懂,但是:

self.container.longVariableName.longName ^= -1
只要您处理的值是整数,

就可以完成这项工作。需要“是整数”,以便在 ~^ 运算符之间存在可利用的数学关系。

为什么它有效:

  1. 按位补码与对无限 1 位字符串进行异或运算相同。
  2. Python 保留了整数使用无限宽度的 2 补码表示的错觉,因此 -1"is"1 位的无限字符串。

关于Python 就地补码运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916404/

相关文章:

python - DJANGO REST 和 mongoengine 中的 PUT 测试用例

sql-server - 怎么不| (按位或)在 SQL Server/SSIS 2012 中工作吗?

c 按位运算来匹配描述

C++ 十六进制表示法和按位运算符性能

python - Django __iregex 返回空响应

Python 对数正态密度与解析解不同

python - 使用自定义小部件填充 QListWidget

python panda groupby并消除重复项

计算 c 中布隆过滤器的汉明距离?

python - 两个多字节二进制数据变量之间最快的按位异或