123*_*123 6 c bit-manipulation bitwise-operators
对于按位运算符我不是很好所以请原谅这个问题,但是如何清除C/C++中32位整数的低16位?
例如,我有一个整数:0x12345678,我想这样做:0x12340000
tem*_*def 15
要清除任何特定的位组,可以使用按位AND和在这些位置具有1的数字的补码.在您的情况下,由于数字0xFFFF的低16位设置,您可以与其补码:
b &= ~0xFFFF; // Clear lower 16 bits.
Run Code Online (Sandbox Code Playgroud)
如果要设置这些位,则可以使用按位OR和具有这些位设置的数字:
b |= 0xFFFF; // Set lower 16 bits.
Run Code Online (Sandbox Code Playgroud)
并且,如果您想要翻转这些位,您可以使用带有这些位设置的数字的按位XOR:
b ^= 0xFFFF; // Flip lower 16 bits.
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!