Simulador de Operaciones a Nivel de Bit (AND, OR, XOR, NOT, Desplazamiento)

Calcula AND, OR, XOR, NOT, desplazamiento a la izquierda y a la derecha sobre dos números, y visualiza exactamente qué bits cambiaron en una cuadrícula binaria. Compatible con anchos de 8/16/32 bits.

¿Qué son las operaciones a nivel de bit?

Las operaciones a nivel de bit tratan los números como secuencias de dígitos binarios (0 y 1) y aplican una operación lógica dígito a dígito. AND, OR, XOR, NOT y los desplazamientos (a la izquierda y a la derecha) son las cinco operaciones más representativas. Todas ellas son instrucciones básicas que la propia CPU ejecuta de forma directa en hardware, por lo que resultan mucho más rápidas que las operaciones aritméticas equivalentes. En la mayoría de lenguajes de programación se escriben como `&`, `|`, `^`, `~`, `<<` y `>>`, y se usan constantemente en la gestión de indicadores (flags), permisos de acceso, criptografía y procesamiento de imágenes.

Este simulador permite indicar el Valor A, el Valor B (NOT solo utiliza el Valor A) y el ancho de bits (8, 16 o 32 bits), y muestra el resultado visualizado bit a bit en una cuadrícula. Los valores pueden introducirse en decimal, o con los prefijos `0x` (hexadecimal) / `0b` (binario), tal como se escribirían en código real. Ten en cuenta que un valor que supere el ancho de bits elegido no puede representarse correctamente dentro de ese ancho, así que decidir primero el ancho de bits facilita interpretar bien el resultado.

Cómo usar el simulador de operaciones a nivel de bit

  1. Elige el ancho de bits Selecciona 8, 16 o 32 bits según el caso que quieras estudiar. Si no estás seguro, empieza por 8 bits: la cuadrícula es más pequeña y resulta más fácil seguir visualmente qué bit cambia.
  2. Elige la operación Selecciona AND, OR, XOR, NOT, desplazamiento a la izquierda o desplazamiento a la derecha. Al elegir NOT, el formulario cambia automáticamente para mostrar un único campo de entrada, ya que esta operación solo necesita un valor.
  3. Introduce los valores Escribe el Valor A (y el Valor B salvo con NOT) en decimal, hexadecimal con prefijo `0x` o binario con prefijo `0b`. En las operaciones de desplazamiento, indica además cuántos bits quieres desplazar.
  4. Revisa la cuadrícula de resultado El resultado se calcula automáticamente y se muestra bit a bit. Los bits resaltados en amarillo son los que cambiaron respecto al valor A como consecuencia de la operación, lo que permite ver de un vistazo el efecto exacto.
  5. Compara la representación decimal y hexadecimal Debajo de la fila de resultado se muestran los mismos valores en decimal y en hexadecimal, útiles para comprobar que la lectura binaria coincide con la que usarías en tu propio código.

Consejos para aprovecharla mejor

  • Puedes introducir valores en decimal, o usar un prefijo hexadecimal como `0x1A` o binario como `0b1010`. Pega los valores tal como los escribirías en tu código.
  • AND, OR y XOR usan dos valores, mientras que NOT solo usa uno. El número de campos de entrada cambia automáticamente según la operación elegida.
  • El desplazamiento a la derecha (`>>>`) solo admite la variante lógica. Consulta las preguntas frecuentes para saber en qué se diferencia de un desplazamiento aritmético que conserva el bit de signo.
  • Cambiar el ancho de bits de 8 a 16 y a 32 permite ver cómo el mismo número gana más ceros a la izquierda, lo cual ayuda a entender qué significa realmente el "ancho de bits".
  • Los bits resaltados en amarillo son los que cambiaron entre A y el resultado, así que con AND/OR puedes seguir visualmente qué valor de entrada "ganó" en cada posición.

Situaciones en las que se usan las operaciones a nivel de bit

Aprender a programar (C, Java, Python...)

Cuando se estudian por primera vez los operadores a nivel de bit, especialmente NOT y los desplazamientos, resulta difícil calcular el resultado mentalmente. Comprobarlo aquí de forma visual, bit a bit, ayuda a fijar el concepto mucho más rápido que memorizar reglas abstractas.

Diseño de banderas de bits y sistemas de permisos

Los permisos de archivos de Unix, o cualquier diseño que empaquete varios estados de encendido/apagado en un único entero, se basan en enmascarar con AND y activar bits con OR. Prueba primero aquí la máscara antes de llevarla a tu código.

Programación competitiva y algoritmos con máscaras de bits

Técnicas como la programación dinámica basada en máscaras de bits o la representación de conjuntos como enteros son habituales en concursos de programación. Verificar el comportamiento con valores pequeños antes de escribir el algoritmo completo ahorra muchos errores.

Comprobar conversiones entre binario, hexadecimal y decimal

Al mismo tiempo que calculas una operación, puedes comprobar cómo se corresponde el mismo valor en las tres notaciones. Combinado con una herramienta de conversión de bases, es útil para validar cálculos manuales.

Códigos de color y cálculos de direcciones de red

Extraer los componentes rojo, verde y azul de un código de color, o calcular el AND entre una dirección IP y su máscara de subred, son operaciones a nivel de bit que aparecen constantemente en desarrollo web y en redes.

Glosario de operaciones a nivel de bit

AND
Operación que devuelve 1 únicamente cuando ambos bits comparados son 1, y 0 en cualquier otro caso. Se usa habitualmente para enmascarar (aislar) bits concretos de un valor.
OR
Operación que devuelve 1 cuando al menos uno de los dos bits comparados es 1. Se usa para activar (poner a 1) bits específicos sin alterar el resto.
XOR (O exclusivo)
Operación que devuelve 1 solo cuando los dos bits comparados son diferentes. Se emplea para invertir bits, intercambiar valores sin variable auxiliar o detectar diferencias entre dos valores.
NOT
Operación que invierte todos los bits de un único valor (los 0 pasan a 1 y viceversa). Su representación final depende directamente del ancho de bits elegido.
Operación de desplazamiento
Desplaza el patrón de bits de un valor hacia la izquierda o hacia la derecha una cantidad determinada de posiciones. Desplazar a la izquierda equivale a multiplicar por una potencia de dos, y desplazar a la derecha, a dividir entre dos.
Máscara de bits
Un valor que se combina con AND u OR para leer o modificar bits concretos de otro valor. Por ejemplo, `0b00001111` es una máscara que extrae únicamente los 4 bits menos significativos.
Ancho de bits
El número de bits usados para representar un valor. Con 8 bits se pueden representar valores de 0 a 255; con 16 bits, de 0 a 65535.
Notación binaria y hexadecimal
La notación binaria usa únicamente los dígitos 0 y 1, mientras que la hexadecimal usa 0-9 y A-F. La hexadecimal se emplea a menudo como forma compacta de escribir grupos de bits, ya que cada dígito representa exactamente 4 bits.

Preguntas frecuentes

Sí. El desplazamiento lógico (`>>>`) siempre rellena los bits altos que quedan vacíos con 0, mientras que el aritmético (`>>`) copia en su lugar el bit de signo (el bit más significativo). Como esta herramienta trata los valores como enteros no negativos dentro del ancho de bits elegido, el signo no es realmente el punto aquí, así que solo ofrece el desplazamiento lógico, más fácil de entender.

Los operadores a nivel de bit de JavaScript calculan internamente como enteros de 32 bits con signo, por lo que aplicar NOT a un valor de 8 bits `00000001` (1) normalmente da `-2`. Esta herramienta vuelve a enmascarar el resultado al ancho de bits elegido (8/16/32), así que con 8 bits muestra correctamente `11111110` (254), la representación correcta dentro de ese ancho.

AND devuelve 1 solo cuando ambos bits son 1, por lo que se usa habitualmente para enmascarar bits específicos. OR devuelve 1 cuando alguno de los bits es 1, por lo que se usa para activar bits específicos. XOR devuelve 1 solo cuando los bits son diferentes, por lo que se usa para invertir bits o intercambiar dos valores.

El desplazamiento a la izquierda (`<<`) es una forma rápida de multiplicar por potencias de dos (duplicar, cuadruplicar, etc.), mientras que el desplazamiento a la derecha (lógico, como aquí) se usa habitualmente para dividir entre dos o para extraer un rango específico de bits de un valor. Ambos aparecen constantemente en programación competitiva y algoritmos basados en máscaras de bits.

No exactamente: están relacionados pero son términos distintos. Las operaciones a nivel de bit se refieren a las operaciones en sí (AND, OR, XOR, NOT, desplazamientos), mientras que una máscara de bits es un valor que se usa junto con una de esas operaciones (normalmente AND u OR) para leer o modificar bits específicos. Por ejemplo, `value & 0b00001111` es una máscara de bits clásica que extrae solo los 4 bits menos significativos.
Tool-kun

A propósito — Las curiosas propiedades de XOR

Las operaciones a nivel de bit se corresponden directamente con los circuitos lógicos de un ordenador, lo que las convierte en algunas de las operaciones más rápidas que puede ejecutar una CPU, a menudo en un solo ciclo de reloj. Como necesitan un circuito mucho más simple que operaciones aritméticas como la multiplicación o la división, el código sensible al rendimiento (procesamiento de imágenes, criptografía, implementaciones de protocolos de red) ha usado durante mucho tiempo trucos de bits como sustituto de operaciones aritméticas más costosas.

XOR (o exclusivo) tiene un par de propiedades curiosas: aplicar XOR de un valor consigo mismo siempre da 0 (`a ^ a = 0`), y aplicar XOR con 0 devuelve el valor original sin cambios (`a ^ 0 = a`). Combinando estos dos hechos surge el clásico truco del "intercambio con XOR", que intercambia dos variables sin usar una variable temporal (`a ^= b; b ^= a; a ^= b;`). Hoy en día rara vez se recomienda en código de producción por motivos de legibilidad, pero sigue siendo un ejemplo docente favorito para entender las operaciones a nivel de bit.

Las máscaras de bits aparecen constantemente en sistemas reales. Los permisos de archivos en Unix (lectura=4, escritura=2, ejecución=1) son literalmente OR y AND a nivel de bit en acción, y extraer los componentes rojo, verde y azul de un código de color como `#FF0000` se hace con un desplazamiento a la derecha combinado con una máscara AND. La técnica de empaquetar muchos indicadores de encendido/apagado en un único entero, a menudo llamada "banderas de bits", se usó ampliamente en juegos y sistemas antiguos que necesitaban rastrear muchos estados con muy poca memoria.