我有一个名为c0的位数组,包含28位
bitarray('1111011111111111111111110001')我怎么能左移这个位数组多次,意思是一个左移位,两个左移位,等等?一次左班就可以了!
注意:与位阵列包有关。
发布于 2013-12-18 18:40:43
你可以用切片:
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')您也可以将作者戳到支持这些业务。
发布于 2013-12-18 18:40:49
<<和>>是shift运算符(位数组类应该覆盖__ilshift__和__irshift__方法。
https://stackoverflow.com/questions/20665821
复制相似问题