位掩码的最后 5 位

本文关键字:最后 掩码 | 更新日期: 2023-09-27 18:35:45

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

1010 01101 1011 0111 -> 0000 0000 0001 0111

谢谢

位掩码的最后 5 位

使用类似以下内容:

x & 0x1f

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

    1010 1101 1011 0111
  & 0000 0000 0001 1111
  ---------------------
    0000 0000 0001 0111
使用 & 运算符时,掩码中的 0 位会导致结果中的 0 位。

掩码中的 1 位将相应的位复制到结果中。

Value = OriginalValue & 0x1F

像这样:

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

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