python中的二进制位交换
我试图将二进制数的最后两位与前两位交换 例如,我希望0b11101011变成0b11101110 如何在python中使用位运算符实现这一点 谢谢。一种方法是python中的二进制位交换,python,binary,bitwise-operators,Python,Binary,Bitwise Operators,我试图将二进制数的最后两位与前两位交换 例如,我希望0b11101011变成0b11101110 如何在python中使用位运算符实现这一点 谢谢。一种方法是 bin(a & ~15 | (a & 3) << 2 | (a & 12) >> 2) # a & ~15 -- a with the last 4 bits cleared # | (a & 3) << 2 -- or with the
bin(a & ~15 | (a & 3) << 2 | (a & 12) >> 2)
# a & ~15 -- a with the last 4 bits cleared
# | (a & 3) << 2 -- or with the lowest 2 bits (0 & 1) shifted 2 steps to the left
# | (a & 12) >> 2 -- or with bits 2 and 3 shifted 2 steps to the right.
a = 0b11101011
bin(a & ~15 | (a & 3) << 2 | (a & 12) >> 2)
# '0b11101110'
bin(a&15 |(a&3)>2)
#a&~15--a,最后4位已清除
#|(a&3)>2——或位2和3向右移动2步。
a=0b11101011
垃圾箱(a&15 |(a&3)>2)
#“0b11101110”
正如您在*中看到的,它可以通过一个位置换步骤(aka)完成,如下所示
def bit_permute_step(x, m, shift):
t = ((x >> shift) ^ x) & m
x = (x ^ t) ^ (t << shift)
return x
x = bit_permute_step(x, 3, 2)
def位置换步骤(x,m,shift):
t=((x>>移位)^x)和m
你已经试过什么了?