小编kev*_*ler的帖子

计算快速基数2天花板

什么是计算(long int) ceiling(log_2(i))输入和输出为6​​4位整数的快速方法?有符号或无符号整数的解决方案是可以接受的.我怀疑最好的方法将是一个类似于这里发现的方法,但不是尝试我自己,我想使用已经经过充分测试的东西.一般解决方案适用于所有正值.

例如,2,3,4,5,6,7,8的值为1,2,2,3,3,3,3

编辑:到目前为止,最好的路径似乎是使用任意数量的快速现有bithacks或寄存器方法计算整数/楼层日志基数2(MSB的位置),然后如果输入不是幂的话,则添加一个二.对2的幂的快速按位检查是(n&(n-1)).

编辑2:整数对数和前导零方法的一个很好的来源是亨利S.沃伦的Hacker's Delight中的第5-3和11-4节.这是我发现的最完整的治疗方法.

编辑3:这项技术看起来很有希望:https://stackoverflow.com/a/51351885/365478

c math optimization 64-bit bit-manipulation

38
推荐指数
7
解决办法
3万
查看次数

标签 统计

64-bit ×1

bit-manipulation ×1

c ×1

math ×1

optimization ×1