Python中的二进制取反

1 投票
8 回答
4464 浏览
提问于 2025-04-16 22:47

我在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。

撰写回答