首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中左移位数组

如何在python中左移位数组
EN

Stack Overflow用户
提问于 2013-12-18 18:36:01
回答 2查看 3.4K关注 0票数 3

我有一个名为c0的位数组,包含28位

代码语言:javascript
复制
bitarray('1111011111111111111111110001')

我怎么能左移这个位数组多次,意思是一个左移位,两个左移位,等等?一次左班就可以了!

注意:位阵列包有关。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-18 18:40:43

你可以用切片:

代码语言:javascript
复制
def leftshift(ba, count):
    return ba[count:] + (bitarray('0') * count)

def rightshift(ba, count):
    return (bitarray('0') * count) + ba[:-count]

它们保持输入的位宽,将比特放在一端,并在另一端填充0

您可以创建自己的bitarray类型的子类:

代码语言:javascript
复制
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())

演示:

代码语言:javascript
复制
>>> c0 = mybitarray(c0)
>>> c0
mybitarray('1111011111111111111111110001')
>>> c0 << 4
mybitarray('0111111111111111111100010000')
>>> c0 >> 4
mybitarray('0000111101111111111111111111')

您也可以将作者戳到支持这些业务

票数 7
EN

Stack Overflow用户

发布于 2013-12-18 18:40:49

<<>>是shift运算符(位数组类应该覆盖__ilshift____irshift__方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20665821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档