gpt4 book ai didi

c - 求一个数落在 2 的哪个幂次方范围内? (在 C 中)

转载 作者:太空狗 更新时间:2023-10-29 15:11:34 24 4
gpt4 key购买 nike

关于它是否落在 2^3 - 2^4、2^4 - 2^5 等范围内。返回的数字将是指数本身(减去偏移量)。

如何尽可能快速高效地完成这项工作?在极度依赖速度的程序中会经常调用此函数。这是我当前的代码,但由于使用了 for 循环,效率太低了。

static inline size_t getIndex(size_t numOfBytes)
{
int i = 3;
for (; i < 32; i++)
{
if (numOfBytes < (1 << i))
return i - OFFSET;
}
return (NUM_OF_BUCKETS - 1);
}

非常感谢!

最佳答案

据我所知,您所追求的只是 log2(n)。

如果您的目标体系结构具有可以执行此操作的说明,则可能值得作弊并使用一些内联汇编。查看Wikipedia entry在“find first set”上有很多关于硬件支持的讨论和信息。

关于c - 求一个数落在 2 的哪个幂次方范围内? (在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com