hcp*_*ter 2 c bit-manipulation ansi bitmask
我想知道是否可以使用位操作根据位掩码合并两个位域?例如,我有两个值,一个位掩码:
char mask = 0x29; // 0010 1001
char a = 0x9; // 0000 1001 original value
char b = 0xE8; // 1110 1000 modified value
Run Code Online (Sandbox Code Playgroud)
我想根据位掩码将b中的位设置为a的值.只有3位会受到影响.
char val = 0xC9; // 1100 1001 value
Run Code Online (Sandbox Code Playgroud)
那么我怎么能只做位操作呢?
提前致谢.
尝试类似的东西:
b &= ~mask; /* Clear bits set in mask. */
b |= (mask & a); /* Add bits set both in a and in mask. */
Run Code Online (Sandbox Code Playgroud)
此外,您可能希望使用unsigned类型而不是不确定的char.