gpt4 book ai didi

clojure - 有位获取功能吗?

转载 作者:行者123 更新时间:2023-12-02 01:08:18 25 4
gpt4 key购买 nike

这是我想要的行为:

user> (bit-get 4 2)
> 1

我知道这可以使用 bit-test 非常容易地完成,即:

(defn bit-get [x n]
(if (bit-test x n) 1 0))

但我很好奇是否已经存在任何东西。这对我来说可能有点小气,但它似乎不是最理想的(但最低限度)必须测试某些东西是 0 还是 1,然后返回 wehther或者不是 01 基于该测试。所以,我也很高兴听到有什么方法可以在这里切断中间人,不管 Clojure 或 Java 中是否有任何以前制作的 bit-get 函数世界。或者也许我一开始就错了,关于编译或运行时优化的某些事情使得我上面的 bit-get 函数实际上不必运行测试只是为了返回它正在测试的值?或者——我对按位运算符中涉及的时间/速度优化几乎一无所知——也许它看起来不是最优的,但由于某种原因实际上是最快的方法?

最佳答案

不能说关于编译器优化的任何事情(尽管如果它能够对您的 bit-get 代码进行很多更改我会感到惊讶),但是 - 自己解决问题手 - 你可以只依赖于较低级别的逻辑操作 bit-shift-rightbit-and,例如:

(defn bit-get [x n]
(bit-and (bit-shift-right x n) 1))

关于clojure - 有位获取功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20087202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com