找到一种最快/最准确的方法,在一系列任意的长篇中找到第一个截断点的界限?
您职能的原型,如size_t first_unset_bit(char unsign const *buf, 尺寸_t bit_count, 尺寸_tstart_bit);
, 并且可以多次在同一个缓冲地带 quick接。 如果你能够提供更好的原型,请说明理由。
如果您使用任何组装,请提供一至八六种样本,该样本将按核心2或以后进行。 我将回答提供最佳速度和美丽组合的解决办法。
Update0
这里是我的冷静执行。 如果说它实际上正确的话,我没有想法,它还没有在生活系统中使用。
static size_t first_unset_bit(char unsigned const *buf, size_t bit_count, size_t start_bit)
{
for (; start_bit < bit_count; ++start_bit)
{
size_t buf_index = start_bit / CHAR_BIT;
int bit_index = start_bit % CHAR_BIT;
if (!((buf[buf_index] >> bit_index) & 1))
return start_bit;
}
return -1;
}