我想找到n
在数组中设置或取消设置连续位的位置。
示例数组:
a[0] = 0x0fffffff
a[1] = 0x000000f0
a[2] = 0xffffff00
如果我想找到前 8 个未设置的位,它必须返回 28(数组中的第 28 位位置)
如果我想找到前 32 个未设置的位,它必须返回 40(数组中的第 40 位位置)
我正在尝试扩展我在此处找到的代码,以便它可以与任意大的数组一起使用:
int BitCount(unsigned int u)
{
unsigned int uCount;
uCount = u
- ((u >> 1) & 033333333333)
- ((u >> 2) & 011111111111);
return
((uCount + (uCount >> 3))
& 030707070707) % 63;
}