[英]How to left shift a bitarray in python
我有一個名為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')
也可以戳作者原生支持這些操作。
<<
和>>
是移位運算符(位數組類應該覆蓋__ilshift__
和__irshift__
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.