相关疑难解决方法(0)

使用按位运算[n的基数2中的对数]求n = 2**x的指数

是否有一种直接的方法只使用按位运算从2的幂提取指数?

编辑:虽然这个问题最初是关于按位操作的,但如果你想知道" 在Python中给出Y = 2 X时找到X的最快方法什么,这个线程也很好读"**

我目前试图优化的例程(拉宾-米勒素性测试),以降低一个偶数 N的形式2**s * d.我可以得到这个2**s部分:

two_power_s = N & -N
Run Code Online (Sandbox Code Playgroud)

但我找不到用逐位运算来提取" s " 的方法.我目前正在测试的解决方法没有太多满足(它们都非常慢)是:

  • 使用对数函数
  • 操纵2**s的二进制表示(即计算尾随零)
  • 在除法上循环2,直到结果为1

我正在使用python,但我认为这个问题的答案应该是语言无关的.

python primes bit-manipulation logarithm bitwise-operators

14
推荐指数
2
解决办法
8133
查看次数