我有一个名为c0
的位数组,包含28位
bitarray('1111011111111111111111110001')
我怎样才能将这个位数组左移几次,即一个左移,两个左移,等等。?
左一班现在还可以!
注意:这与bitarray包有关。
最佳答案
您可以使用切片:
def leftshift(ba, count):
return ba[count:] + (bitarray('0') * count)
def rightshift(ba, count):
return (bitarray('0') * count) + ba[:-count]
它们保持输入的位宽度,在一端放置位,在另一端填充
0
。您可以创建自己的
bitarray
类型的子类:class mybitarray(bitarray):
def __lshift__(self, count):
return self[count:] + type(self)('0') * count
def __rshift__(self, count):
return type(self)('0') * count + self[:-count]
def __repr__(self):
return "{}('{}')".format(type(self).__name__, self.to01())
演示:
>>> c0 = mybitarray(c0)
>>> c0
mybitarray('1111011111111111111111110001')
>>> c0 << 4
mybitarray('0111111111111111111100010000')
>>> c0 >> 4
mybitarray('0000111101111111111111111111')
您也可以将作者插入support these operations natively。
关于python - 如何在Python中左移位数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20665821/