1

我有一个位掩码(存储为短)。出于各种目的,我想将除最后 5 位之外的所有位清零 - 我确信有一种简单的方法可以通过按位运算符来做到这一点,但它让我望而却步。

1010 01101 1011 0111 -> 0000 0000 0001 0111

谢谢

4

3 回答 3

8

使用类似的东西:

x & 0x1f

在二进制中,您的示例将是:

    1010 1101 1011 0111
  & 0000 0000 0001 1111
  ---------------------
    0000 0000 0001 0111

使用&运算符时,掩码中的 0 位导致结果中的 0 位。掩码中的 1 位将相应的位复制到结果中。

于 2012-05-29T22:16:30.987 回答
1

值 = 原始值 & 0x1F

于 2012-05-29T22:19:03.307 回答
-1

像这样的东西:

your_variable_name & ((1 << 5) - 1)

(1 << 5) - 1 会给你一个 11111,然后你和它与你的值。

于 2012-05-29T22:17:37.760 回答