【问题标题】:Python bitarray manipulationPython位数组操作
【发布时间】:2017-01-27 00:32:41
【问题描述】:

我想从位数组中删除每个 16 位整数的最低有效 2 位。它们的存储方式如下:

010101**00**10010101101100**00**10101010.....

(星号之间的零将被删除。每 16 位有两个(忽略第一个)。

我可以使用常规的 for 循环检查索引(每 16 位后的第 7 和第 8 位)简单地消除它们。

但是...还有其他更多 pythonic 方法可以做到这一点吗?我正在考虑一些切片符号或理解列表。也许我可以将每个数字除以 4,然后用 14 位对每个数字进行编码(如果有办法的话)。

【问题讨论】:

    标签: python arrays list bit-manipulation bitarray


    【解决方案1】:

    您可以通过掩码轻松清除位。如果你想清除第 8 位和第 7 位,你可以这样做:

    a = int('10010101101100',2)
    mask = ~((1 << 7) | (1 << 8))
    bin(a&mask)
    

    更多关于屏蔽here!的信息

    【讨论】:

      猜你喜欢
      • 2018-11-30
      • 1970-01-01
      • 2011-01-31
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      相关资源
      最近更新 更多