Para despejar cualquier conjunto de bits, puede utilizar AND bit a bit con el complemento de un número que tiene 1s en esos lugares. En su caso, ya que el número 0xFFFF ha fijado sus 16 bits más bajos, se puede y con su complemento:
b &= ~0xFFFF; // Clear lower 16 bits.
Si quería establece esos bits, se podría utilizar en su lugar un OR con un número que ha establecido esos bits:
b |= 0xFFFF; // Set lower 16 bits.
Y, si se quería flip esos bits, se puede utilizar un XOR bit a bit con un número que tiene los bits establecidos:
b ^= 0xFFFF; // Flip lower 16 bits.
Espero que esto ayude!
Esto es realmente bueno porque también funciona con valores de 16 y 64 bits, si no me equivoco. –
@Ray: ¿por qué no? – James
@ James- Si intenta hacer algo como 'b & 0xFFFF0000' en una máquina que no sea de 32 bits (por ejemplo, una máquina de 64 bits), entonces esto podría terminar borrando accidentalmente los 32 bits más altos además de los 32 bits bajos. bits. – templatetypedef