Python就地补码操作

2024-09-23 06:35:29 发布

您现在位置:Python中文网/ 问答频道 /正文

Python有常见的按位运算符,如~&|等,以及{}、&=等,以简化表达式,例如:

a = a & 34234
a = a + 577

收件人:

^{pr2}$

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

a = ~a # not bad at all

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

Tags: self表达式containernot运算符all结构at
2条回答

如果只关心对象实例的属性,可以编写如下方法:

def c(obj, atr):
    setattr(obj,atr,~getattr(obj,atr))

然后像这样使用它:

^{pr2}$

我认为@TimPeters的答案要好得多,但是我想我会提供这个,以防将来对任何需要使用非整数的人有用的话,他们很乐意只使用即时属性

它非常模糊,但是:

self.container.longVariableName.longName ^= -1

只要你处理的是整数,就可以了。”Are integers”是必需的,这样~和{}运算符之间存在可利用的数学关系。在

为什么有效:

  1. 位补码与1位的无限字符串的异或相同。在
  2. Python保持了一种错觉,即整数使用无限宽的2的补码表示,因此-1“是”1位的无限字符串。在

相关问题 更多 >