Operaciones de bits en C++: Cómo establecer, borrar y alternar un bit

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Operaciones de bits en C++: Cómo establecer, borrar y alternar un solo bit (sin volverse loco)



¡Hola, colega! Si alguna vez has mirado código ajeno en C++ y has visto símbolos extraños como |, & y ~, y luego te has preguntado "¿por qué hacen esto?" — has llegado al lugar indicado. Hoy analizaremos uno de los temas más populares (y, francamente, más elegantes) en programación: operaciones de bits. En concreto, cómo establecer, borrar y alternar un solo bit.



Esto no es solo un ejercicio académico. Trabajar con bits es una superhabilidad que te será útil en todas partes: desde trabajar con banderas de configuración y periféricos de microcontroladores hasta optimizar el almacenamiento de datos en juegos o bases de datos. En Stack Overflow, esta pregunta ha acumulado cientos de miles de visitas, lo que significa que es realmente importante.



Dejemos la teoría aburrida de lado y vayamos directo al grano. ¡Allá vamos!



¿Por qué trabajamos con bits?



Imagina que tienes 8 configuraciones diferentes (por ejemplo, activar sonido, mostrar sugerencias, activar modo nocturno, etc.). Podrías almacenarlas en ocho variables separadas de tipo bool. Pero eso son 8 bytes (o más). En cambio, puedes usar un solo byte — 8 bits, cada uno responsable de su propia configuración. Ahorro de memoria de 8 veces, y eso es solo el comienzo.



Las operaciones de bits son magia de bajo nivel que funciona increíblemente rápido. El procesador las ejecuta en un solo ciclo de reloj. Para sistemas embebidos, controladores y aplicaciones de alta carga, esto es crítico.



En C++, se utilizan tres operadores principales para trabajar con bits:

  • | (OR bit a bit) — para establecer un bit.
  • & (AND bit a bit) — para borrar un bit.
  • ^ (XOR bit a bit, OR exclusivo) — para alternar un bit.


Y otro operador útil es ~ (NOT bit a bit), que invierte todos los bits. Lo necesitaremos para borrar.



Numeración de bits: acordemos desde el principio



En programación, los bits se numeran desde cero. El bit menos significativo (Least Significant Bit, LSB) es el bit 0. El más significativo (Most Significant Bit, MSB) es el bit 7 para un byte, 15 para una palabra (16 bits), etc.



En este artículo usaremos uint8_t (entero sin signo de 8 bits) para mayor claridad. Pero todos los ejemplos funcionan también con int, unsigned int, uint32_t y cualquier otro tipo entero.



Cómo establecer un bit (Set bit)



Establecer un bit significa hacerlo igual a 1, independientemente de su valor anterior.



La forma más sencilla es usar el OR bit a bit con una máscara. Una máscara es un número en el que solo está establecido el bit que queremos cambiar.



Fórmula:

numero |= (1 << numero_de_bit);


Analicemos paso a paso:

  1. 1 << numero_de_bit — desplazamos un 1 a la izquierda la cantidad de posiciones necesarias. Si el número de bit es 3, entonces 1 << 3 da el binario 00001000.
  2. numero | mascara — la operación OR establecerá el bit en 1 si era 0, y lo dejará en 1 si ya era 1.


Ejemplo de código en C++:

#include <iostream>#include <cstdint>

int main() { uint8_t flags = 0b00000000; // Inicialmente todos los bits borrados

// Establecemos el bit 3 (contando desde cero) flags |= (1 << 3);

// Ahora flags = 0b00001000 std::cout << "Después de establecer el bit 3: " << static_cast<int>(flags) << std::endl;

// Establecemos el bit 0 flags |= (1 << 0); // flags = 0b00001001 std::cout << "Después de establecer el bit 0: " << static_cast<int>

Blogs

Book Recommendations