我有一个位掩码(存储为短)。出于各种目的,我想将除最后 5 位之外的所有位清零 - 我确信有一种简单的方法可以通过按位运算符来做到这一点,但它让我望而却步。
1010 01101 1011 0111 -> 0000 0000 0001 0111
谢谢
我有一个位掩码(存储为短)。出于各种目的,我想将除最后 5 位之外的所有位清零 - 我确信有一种简单的方法可以通过按位运算符来做到这一点,但它让我望而却步。
1010 01101 1011 0111 -> 0000 0000 0001 0111
谢谢
使用类似的东西:
x & 0x1f
在二进制中,您的示例将是:
1010 1101 1011 0111
& 0000 0000 0001 1111
---------------------
0000 0000 0001 0111
使用&
运算符时,掩码中的 0 位导致结果中的 0 位。掩码中的 1 位将相应的位复制到结果中。
值 = 原始值 & 0x1F
像这样的东西:
your_variable_name & ((1 << 5) - 1)
(1 << 5) - 1 会给你一个 11111,然后你和它与你的值。