gpt4 book ai didi

c++ - 提高计算 1 到 2 之间数字的 log2 的性能

转载 作者:搜寻专家 更新时间:2023-10-31 02:10:22 25 4
gpt4 key购买 nike

<分区>

我正在尝试使用整数算术运算计算 log2(x)

输入的x是一个介于1和2之间的值。

因为这只会产生 0,所以所有内容都按 16 进行了预缩放。

换句话说:

  • 该函数采用整数值 x * 2^16 而不是 x
  • 函数返回 log2(x) * 2^16 的整数值而不是 log2(x)

这是我的代码:

uint64_t Log2(uint64_t x)
{
static uint64_t TWO = (uint64_t)2 << 16;

uint64_t res = 0;

for (int i=0; i<16; i++)
{
x = (x * x) >> 16;
if (x >= TWO)
{
x >>= 1;
res += 1 << (15 - i);
}
}

return res;
}

我正在寻找一种提高循环性能的方法。

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