gpt4 book ai didi

python 在位掩码中找到 1

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:23 25 4
gpt4 key购买 nike

我有许多节点可以分组以通过位掩码响应命令。例如:NodeA 属于第 1 组和第 5 组。当询问它属于哪个组时,它会回答 17,其中二进制等价物为“0b10001”。组 2、7 和 9 中的节点会告诉我它属于组 322 ('0b101000010')。我需要一种方法来向用户显示指定节点属于哪个组。有 16 个组的可能性。如果二进制文件的长度不是 16 个字符,我的代码将给出“字符串索引超出范围”错误。我知道有更好的方法:

def xref(grp):
a = bin(grp)
d = str(a)
if d[-1] == '1':
print "Group 1"
if d[-2] == '1':
print "Group 2"
if d[-3] == '1':
print "Group 3"
repeat for 16 groups

最佳答案

您只需要使用一些基本的 bitwise operators .

这是一个例子:

def findbits(num):
for i in range(16):
if num & 1 << i:
print("Group {0}".format(i + 1))

结果:

>>> findbits(0b10001) Group 1Group 5>>> findbits(0b10100010)Group 2Group 6Group 8>>> findbits(0b101000010)Group 2 Group 7 Group 9

这样做是循环遍历您要查看的 16 位。

  • 1 << i将数字 1 移动 i位,例如1 << 4将是 0b10000
  • num & whatever 按位与 - 如果两个操作数的位为 1,则数字的每一位都设置为 1。

所以它的作用是将您的值与 0b1、0b10、0b100 等进行比较。

关于python 在位掩码中找到 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38979660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com