python 中的反转位

Inverting bits in python

我正在做一些计算,我想知道如何反转 python 中的一个字节。

例如:

0b11111111 应翻转为 0b00000000

我试过将其转换为字符串然后翻转它,但我无法以某种方式将其转换回整数。

此外,我想补充一点,~ 不起作用,因为它只是生成相同的负数

 bin(0b11010111 ^ 0b11111111) // bit subtraction
 # Result
 # bin(0b11010111 ^ 0b11111111)
 #'0b101000'
 # for each bit subtraction with 1 occur

解释为什么 ~ “dit not work”:您想反转一个字节(8 位)中的所有位,但是 0b.... value 不是一个字节,而是一个 int,它的位数不仅仅是 8。 ~var 反转整数中的所有位。您可以使用掩码清除除最低 8 位之外的所有位以获得您期望的结果:

MASK8 = 0b11111111  # or 255 decimal

v = 0b11101110                                                                                                                                                    
inv = ~v & MASK8    # 0b10001