Python使用位

时间:2016-05-11 13:49:10

标签: python bit-manipulation bit

我想做一些操作,需要一些帮助:

我有一个16位的字,想把它分成两个,反转每个然后再加入它们。

示例,如果我有0b11000011

首先我将其分为0b1100和0b0011

然后我反过来获得0b0011和0b1100

最后重新加入他们获得0b00111100

谢谢!

2 个答案:

答案 0 :(得分:3)

以下是一种方法:

def rev(n):
    res = 0
    mask = 0x01
    while mask <= 0x80:
        res <<= 1
        res |= bool(n & mask)
        mask <<= 1

    return res

x = 0b1100000110000011
x = (rev(x >> 8) << 8) | rev(x & 0xFF)
print bin(x) # 0b1000001111000001

请注意,上述方法对单词进行操作,而不是字节作为问题中的示例。

答案 1 :(得分:1)

这里有一些你可以尝试的基本操作,你可以在将字符串分成两部分并将其反转后连接结果

a = "0b11000011"  #make a string 

b = a[:6]         #get first 5 chars

c = a[::-1]       # invert the string