作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 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/
我是一名优秀的程序员,十分优秀!