擅长:python、mysql、java
<p>您要求使用最快的方式,大概是使用现代版本的Python。现代版本的Python具有可变长度的int,而传统的智慧并不适用。转移大量数据并不便宜。换档1很便宜。这里有一些-mtimeit输入和相应的输出。第一个是</p>
<pre><code>windows command prompt>\python27\python -mtimeit -s"a=10**20;n=3" "(a>>n)&1"
1000000 loops, best of 3: 0.238 usec per loop
-s"a=10**20;n=3" "(a>>n)&1"
0.238 usec
-s"a=10**20;n=3" "not not(a & (1 << n))"
0.154 usec
-s"a=10**200;n=3" "(a>>n)&1"
0.382 usec
-s"a=10**200;n=3" "not not(a & (1 << n))"
0.155 usec
-s"a=10**10;n=3" "(a>>n)&1"
0.231 usec
-s"a=10**10;n=3" "not not(a & (1 << n))"
0.156 usec
-s"a=10**9;n=3" "(a>>n)&1"
0.0801 usec
-s"a=10**9;n=3" "not not(a & (1 << n))"
0.0938 usec
-s"a=2**1000;n=64" "(a>>n)&1"
0.446 usec
-s"a=2**1000;n=64" "not not(a & (1 << n))"
0.255 usec
</code></pre>
<p>如果<code>not not(foo)</code>吓到你了,或者你真的想要一个<code>int</code>而不是<code>bool</code>,你可以使用<code>1 if foo else 0</code>;它只是稍微慢一点。在</p>