如何迭代二进制掩码长的长

How to iterate over binary masks of long long?

本文关键字:二进制 掩码 迭代 何迭代      更新时间:2023-10-16

如何迭代long long的唯一(...000010000...)二进制掩码?我指的是像0001, 0010, 0100, 1000这样的遮罩

如果你的意思是每个掩码只有一个位集:

for (unsigned long long mask = 1; mask != 0; mask <<= 1) {
    // Do something with mask
}

注意,您必须使用unsigned,以便在移位溢出时定义行为。

我想你不是指所有可能的掩码值;遍历它们需要很长时间