这是我想要的行为:
user> (bit-get 4 2)
> 1
我知道这可以很容易地使用bit-test
,即:
(defn bit-get [x n]
(if (bit-test x n) 1 0))
但我很好奇那里是否已经有任何东西。0
这对我来说可能有点小气,但是必须测试某物是否是or 1
,然后根据该测试返回它是否是0
or ,这似乎不是最理想的(尽管如此) 。1
所以,我也很高兴听到这里有什么方法可以去掉中间人,不管bit-get
在 Clojure 或 Java 世界中是否有任何以前制作的函数。或者也许我一开始就弄错了,关于编译或运行时优化的一些事情让我bit-get
上面的函数实际上不必运行测试只是为了返回它正在测试的值?或者 - 看到我对按位运算符中涉及的时序/速度优化几乎一无所知 - 也许它似乎只是次优,但实际上是出于某种原因最快的方法?