我需要一个提取整数中最后N位的函数(N <32,因此结果总是正的)。我似乎无法自己解决这个问题。
我的第一种方法是左移(32-n)位然后右移(32-n)位,但是Clojure将第一个结果转换为BigInt,因此我无法摆脱前32-n位。
有人可以帮忙吗?谢谢!
答案 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函数,所以我只是在学习......