我需要一个提取整数中最后 N 位的函数(N < 32,因此结果始终为正)。我自己似乎无法解决。
我的第一种方法是左移 (32 - n) 位,然后右移 (32 - n) 位,但是 Clojure 将第一个结果转换为 BigInt,因此我无法摆脱前 32-n 位。
有人可以帮忙吗?谢谢!
我认为你想要的是使用按位的东西,例如:
(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 函数,所以我也只是在学习......