gpt4 book ai didi

c - 求 2 的幂的优雅方法

转载 作者:行者123 更新时间:2023-12-02 07:00:16 30 4
gpt4 key购买 nike

我的问题与 Fastest way of computing the power that a "power of 2" number used? 非常相似:

x=2^y 作为输入,我想输出 y。不同之处在于我使用 C 而不是 C++ 进行编码,而且我确信我的输入中只设置了一位,所以我想知道是否有更有效的方法来解决这个问题。

这是我的尝试:

unsigned int get_power_of_two(unsigned int x)
{
unsigned int y=0;
for(unsigned int input=x; input>0; input=input>>1)
{
if(input & 1U)
{
break;
}
y++;
}
return y;
}

与@Dave 的回答中建议的查找表相比,这种效率如何?(同样,我用 C 编写代码,所以我没有像 lower_bound 这样的迭代器函数)

最佳答案

您的算法的效率是 O(log x),而 Dave 的(对 2 的幂执行二进制搜索)是 O(log log x)。所以他的渐近速度更快。

当然,最快的方法是使用 BSF 指令。

关于c - 求 2 的幂的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22222647/

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