gpt4 book ai didi

c# - 如何在不使用 C# 中的内置数学函数的情况下计算以 2 为底的对数?

转载 作者:太空狗 更新时间:2023-10-30 00:33:24 26 4
gpt4 key购买 nike

如何在不使用 C# 中的内置数学函数的情况下计算以 2 为底的对数?

我在一个应用程序中重复使用 Math.Log 和 BigInteger.Log 数百万次,它变得非常慢。

我对使用二进制操作来实现相同目的的替代方案很感兴趣。请记住,如果有助于加快执行时间,我可以使用对数近似值。

最佳答案

假设您只对对数的整数部分感兴趣,您可以这样做:

static int LogBase2(uint value)
{
int log = 31;
while (log >= 0)
{
uint mask = (1 << log);
if ((mask & value) != 0)
return (uint)log;
log--;
}
return -1;
}

(注意 0 的返回值是错误的;它应该是负无穷大,但是整数数据类型没有这样的值所以我返回 -1)

关于c# - 如何在不使用 C# 中的内置数学函数的情况下计算以 2 为底的对数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023007/

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