在Boost :: Dynamic_bitset中提取设置的位索引

extract the index of bits set in a boost::dynamic_bitset

本文关键字:设置 提取 索引 bitset Boost Dynamic      更新时间:2023-10-16

i有 Dynamic bitset ,其中我要存储随机生成的整数值。

然后,我想取n位块,然后检查设置为1的位的索引。最后,我将 dynamic bitset 视为一种表。因此,我想要的是,如果我在 ith n位的块中,该块中的位置设置为1,因此块内的零件的索引始终从0开始。因此,换句话说,我需要跟踪n个位的ITH块,并且我还需要在该块内设置为1的位的索引。

Note 我正在使用动态比特集,因为我只能在运行时知道的斑点的大小,也只有N位的大小。

事先感谢您提供的任何帮助。

这是我认为您正在寻找的逻辑的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 setn", next_psn);
        }
    }