【发布时间】:2013-11-20 04:13:52
【问题描述】:
这是我想要的行为:
user> (bit-get 4 2)
> 1
我知道这可以使用bit-test 非常容易地完成,即:
(defn bit-get [x n]
(if (bit-test x n) 1 0))
但我很好奇那里是否已经有任何东西。这对我来说可能有点小气,但它似乎不是最理想的(尽管如此)必须测试某个东西是0 还是1,然后返回它是否是0 或1基于该测试。所以,我也很高兴听到这里有什么方法可以切断中间人,无论在 Clojure 或 Java 世界中是否有任何以前制作的 bit-get 函数。或者也许我一开始就弄错了,关于编译或运行时优化的一些事情使我上面的bit-get 函数实际上不必运行测试只是为了返回它正在测试的值?或者——据我所知,我对按位运算符中涉及的时间/速度优化几乎一无所知——也许它似乎只是次优,但实际上由于某种原因是最快的方法?
【问题讨论】:
标签: clojure bit-manipulation clojure-java-interop