我有一个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 0111 - 4th bit unchanged
有人可以请我解释一下如何实现这一目标。也许我需要更改掩码,以使其显示可以更改的位,即上述示例中的0111 ...我不知道。
关于标记。
new_value = (value & locked) | (incoming & ~locked);
如果您认为它更具可读性,则可以使用+
代替|
。