如何使用位掩码允许/禁止操作某些位



我有一个 32 位值,代表 32 个单独的状态。 我还有另一个 32 位值,它控制哪些位被锁定或可以由应用程序更改。

例如(使用4位掩码简洁)

Example 1
Value          1010
Lock Mask      1000 - i.e. the 4th bit is locked, i.e. can't be altered
Incoming value 0100
New Result     1100 - 4th bit unchanged
Example 2
Value          0011
Lock Mask      1000 - i.e. the 4th bit is locked, i.e. can't be altered
Incoming value 1100
New Result     0100 - 4th bit unchanged

有人可以解释一下我如何实现这一目标。也许我需要更改掩码,以便它显示可以更改的位,即上面示例中的 0111...我不知道。

问候 马克。

假设一种类似 C 的语言,其中&是按位和的;|是按位或;~是按位补码:

new_value = (value & locked) | (incoming & ~locked);

你可以用+代替|,如果你觉得它更易读。

最新更新