我有动态bitset ,其中我存储了随机生成的整数值。
然后我想获取n位的块并检查设置为1的位的索引。最后,我将动态位集视为一种表。所以我想要的是现在,如果我在n位的第n 块中,该块中的哪些位被设置为1,那么块内的位的索引始终从0开始。换句话说,我需要跟踪n位的第i个块,并且还需要在该块中设置为1的位的索引。
注意我正在使用动态bitset,因为bitset的大小我只能在运行时知道,也就是n位块的大小。
提前感谢您提供给我的任何帮助。
答案 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);
}
}