Clojure - 提取整数中最后N位的最快方法?

4 java clojure

我需要一个提取整数的最后N位的函数(N <32,因此结果总是正数).我似乎无法自己解决这个问题.

我的第一种方法是左移(32-n)位然后右移(32-n)位,但是Clojure将第一个结果转换为BigInt,因此我无法摆脱前32-n位.

有人可以帮忙吗?谢谢!

小智 5

我认为你想要的是使用按位的东西,例如:

(defn low-bits [x n]
    "Get the lowest n bits of x"
    (bit-and x (unchecked-dec (bit-shift-left 1 n))))
Run Code Online (Sandbox Code Playgroud)

n 8,(bit-shift-left 1 8)给出256,然后(dec 256)给出255,一个最低8位设置的数字和高位0.然后按位并给出一个数字,其中最低8位是它们所处的位置x,以及高位都是0(这是你想要的吗?).

免责声明:这可能是我写的第四个Clojure函数,所以我只是在学习......