提取boost :: dynamic_bitset

时间:2015-05-04 03:55:37

标签: c++ boost bitset

我有动态bitset ,其中我存储了随机生成的整数值。

然后我想获取n位的块并检查设置为1的位的索引。最后,我将动态位集视为一种表。所以我想要的是现在,如果我在n位的第n 块中,该块中的哪些位被设置为1,那么块内的位的索引始终从0开始。换句话说,我需要跟踪n位的第i个块,并且还需要在该块中设置为1的位的索引。

注意我正在使用动态bitset,因为bitset的大小我只能在运行时知道,也就是n位块的大小。

提前感谢您提供给我的任何帮助。

1 个答案:

答案 0 :(得分:0)

这是我认为你正在寻找的逻辑的C解决方案 -

    for (int blk_num = 0; blk_num < BLOCK_COUNT; blk_num++) {
        U32 tmp_bitmap = bitmap_arr[blk_num];
        while (tmp_bitmap > 0) {
            int next_psn = __builtin_ffs(tmp_bitmap) + blk_num * 32 - 1;
            tmp_bitmap &= (tmp_bitmap-1);
            printf("Index: %d set\n", next_psn);
        }
    }