Python中的二进制取反
我在Python里找不到整数的逻辑取反运算符。
现在我用的是这个:
def not_(x):
assert x in (0, 1)
return abs(1-x)
但我觉得这样有点傻。难道没有内置的运算符可以用吗?逻辑取反(not
)返回的是布尔值——这其实不是我想要的。有没有其他的运算符,或者有什么办法让not
返回一个整数,还是说我只能用这个不太靠谱的变通方法?
8 个回答
3
如果你希望输入0时得到1,输入1时得到0,那么XOR运算就是你的好帮手。你只需要把你的值和1进行XOR运算:
negate = lambda x: x ^ True
negate(0)
Out: 1
negate(1)
Out: 0
negate(False)
Out: True
negate(True)
Out: False
4
你可以使用:
int(not x)
来把布尔值转换成0或1。
3
你是想问:
int(not(x))
?假设任何非零的整数值都被认为是真,而0被认为是假,那么你得到的结果总是整数0或1。