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
我正在做一些计算,我想知道如何反转 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