根据位掩码合并两个位域 [英] Merge two bitfields according a bitmask
本文介绍了根据位掩码合并两个位域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
char mask = 0x29; // 0010 1001
char a = 0x9; // 0000 1001 original value
char b = 0xE8; // 1110 1000 modified value
我想根据位掩码将b中的位设置为a的值。只有3位会受到影响。
char val = 0xC9; // 1100 1001 value
那么,我应该如何处理仅位运算?
提前谢谢。
推荐答案
首先,从b
清除掩码中设置的位。然后,从a
清除掩码中未设置的位。最后,OR
两个结果合在一起:
b = (b & ~mask) | (a & mask);
代字号~
运算符生成求反的掩码。AND
ING WITH~mask
将掩码中设置的b
位清零。
这篇关于根据位掩码合并两个位域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文