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

时间:2012-05-08 04:01:14

标签: java clojure

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

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

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:5)

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

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

n 8(bit-shift-left 1 8)给出256,然后(dec 256)给出255,一个设置最低8位且高位为0的数字。然后按位并给出我们是一个数字,其中最低8位是x中的任何一位,高位都是0(这是你想要的?)。

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