前端之家收集整理的这篇文章主要介绍了
在C#中计算整数的log2的最快方法是什么?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何最有效地计算C#中整数(日志基数2)所需的位数?例如:
int bits = 1 + log2(100);
=> bits == 7
在
代码行或运行时执行速度方面的效率?
代码很简单:Math.log(n,2).
运行速度有点棘手,但你可以用一种“二进制搜索”来实现:
int bits = 1;
for (int b = 16; b >=1; b/=2)
{
int s = 1 << b;
if (n >= s) { n>>=b; bits+=b; }
}
我不是100%确定我有逻辑,但希望这个想法很清楚. .NET VM中可能会有一些开销,但原则上应该更快.
for循环初始化器中的16是基于int所需的位数的一半.如果您正在使用多种方式,请在32级开始
原文链接:https://www.f2er.com/csharp/95643.html