Operadores Bitwise
C da acceso directo al patrón de bits de un integer: | establece bits, & los prueba o los borra, ^ los invierte, y << / >> desplazan bits a la izquierda o a la derecha. 1 << n produce un valor con solo el bit n establecido — un patrón común para representar una flag entre muchas en un solo integer.
#include <stdio.h>
int main() {
unsigned int flags = 0;
flags |= 1 << 0;
flags |= 1 << 2;
printf("%u\n", flags);
printf("%d\n", (flags & (1 << 2)) != 0);
printf("%d\n", (flags & (1 << 1)) != 0);
return 0;
}5 1 0
flags |= 1 << 0 y flags |= 1 << 2 establecen los bits 0 y 2, produciendo 5 (binario 101). (flags & (1 << 2)) != 0 luego prueba si el bit 2 específicamente está establecido, independientemente de cualquier otro bit — el mismo patrón que los sistemas operativos, el código embebido y los protocolos de red usan para empaquetar muchas flags booleanas en un solo integer.
A continuación: enums y typedef — nombrar constantes y dar a tipos complejos nombres más cortos.
Practice exercise
Fija un unsigned int flags en 0, luego establece el bit 3 usando |= y (1 << 3). Imprime si el bit 3 está establecido usando (flags & (1 << 3)) != 0.