【发布时间】:2015-10-14 19:04:09
【问题描述】:
我正在寻找一种方法来在 bitset 中找到连续的 set 或 unset 位块,例如在 bitset 01010111010 如果我正在寻找 3 个 set 位,我想得到 6 个结果(从1,如果我从 0 开始计数,则为 5)。
另外,这是针对 OS-dev 的,所以没有 stdlib 可以为我做这件事。
【问题讨论】:
-
如果是1110111011呢?
-
那我真的不在乎我会得到哪一个。我对内存中的已分配/空闲页面使用位集,有时我需要例如 3 页连续内存,所以我需要找到 3 个连续设置位。
-
请详细说明。你的情况如何?什么数据类型?你尝试了什么?
-
数据类型是一个 uint32_t 数组,其中 32 个,总和为 1024 位。我试图找到第一个 1,然后从那里数下一个 1,如果它们还不够,请返回,找到下一个 1,从那里数,但这似乎完全愚蠢且效率低下。跨度>
-
我投票重新打开这个问题,因为链接副本上接受的答案是带有场外链接的 C/C++ 库推荐,这应该是题外话,并且这个问题也被标记为 C
标签: c operating-system bitset