Las operaciones bit a bit son absolutamente esenciales cuando se programan registros de hardware en sistemas embebidos. Por ejemplo, cada procesador que he usado tiene uno o más registros (generalmente una dirección de memoria específica) que controlan si una interrupción está habilitada o deshabilitada. Para permitir que se active una interrupción, el proceso habitual es establecer el bit de habilitación para ese tipo de interrupción y, lo más importante, no modificar ninguno de los otros bits en el registro.
Cuando se dispara una interrupción, generalmente establece un bit en un registro de estado para que una única rutina de servicio pueda determinar la razón precisa de la interrupción. Probar los bits individuales permite una rápida decodificación de la fuente de interrupción.
En muchos sistemas embebidos, la RAM total disponible puede ser de 64, 128 o 256 BYTES (es decir, Bytes, no kilobytes o megabytes). En este entorno, es común usar un byte para almacenar múltiples elementos de datos, banderas booleanas, etc. y luego usar operaciones de bits para configurar y leer estos.
Durante varios años he estado trabajando con un sistema de comunicaciones satelitales donde la carga útil del mensaje es de 10.5 bytes. Para aprovechar al máximo este paquete de datos, la información se debe empaquetar en el bloque de datos sin dejar ningún bit no utilizado entre los campos. Esto significa hacer un uso extensivo de los operadores bit a bit y shift para tomar los valores de información y empaquetarlos en la carga útil que se transmite.