2

我有一个函数来增加一个位串,如下所示:

void increment(boost::dynamic_bitset<> &bitset)
{   
    for (int loop = 0; loop < bitset.size(); ++loop)
    {
        if ((bitset[loop] ^= 0x1) == 0x1)
        {
            break;
        }
    }
}

我想要一个以与调用增量相同的方式调用的函数,但以不同的方式修改位串。每次调用它时,我都想获得与前一个具有相同数量 0 的下一个位串。

例如,如果位串的长度为 10,则对该函数的前 10 次调用将给出一个具有单个 0 的位串。然后,调用 11 到 20 将返回具有 2 个 0 的位串。我希望这一直持续下去,直到位串全为 0。

我怎么能设置这样的功能?谢谢!

4

1 回答 1

0

您可以在Matters Computational的第 1.24.3 章“Shifts-order”中找到答案。您必须将整数更改为位集并翻转值。与位集一起使用时,此实现可能不是最佳的。

于 2012-02-18T18:58:39.073 回答