Tag: 位位操作

计算快速日志库2天花板

什么是计算(long int) ceiling(log_2(i))的快速方法,input和输出是64位整数? 有符号或无符号整数的解决scheme是可以接受的。 我怀疑最好的方法将是一个类似于这里发现的有点扭曲的方法,而不是尝试我自己的,我想使用一些已经testing好的东西。 一般的解决scheme将适用于所有正面的价值。 例如,2,3,4,5,6,7,8的值是1,2,2,3,3,3,3 编辑:到目前为止,最好的路线似乎是使用任何数量的快速存在的bithacks或注册方法计算整数/楼层日志基数2(MSB的位置),然后添加一个如果input不是功率二。 (n&(n-1))幂的快速按位检查。 编辑2:整数对数和前导零方法的一个很好的来源是Henry S. Warren在Hacker's Delight中的5-3和11-4节。 这是我发现的最完整的治疗方法。

快速计算64位整数的log2

一个伟大的编程资源Bit Twiddling Hacks提出了( 这里 )计算一个32位整数的log2的方法: #define LT(n) n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n static const char LogTable256[256] = { -1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, LT(4), LT(5), LT(5), LT(6), LT(6), LT(6), LT(6), LT(7), LT(7), LT(7), […]