簡體   English   中英

如何在python中左移位數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM