我有一个 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);
你可以用+
代替|
,如果你觉得它更易读。