在C#中计算整数的log2的最快方法是什么?
发布时间:2020-12-15 06:25:40 所属栏目:百科 来源:网络整理
导读:如何最有效地计算C#中整数(日志基数2)所需的位数?例如: int bits = 1 + log2(100);= bits == 7 解决方法 在代码行或运行时执行速度方面的效率? 代码很简单:Math.log(n,2). 运行速度有点棘手,但你可以用一种“二进制搜索”来实现: int bits = 1;for (int
如何最有效地计算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级开始 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |