4

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

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

有人可以帮忙吗?谢谢!

4

1 回答 1

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 函数,所以我也只是在学习......

于 2012-05-08T09:29:37.393 回答