¿Qué significan "&", "|" y "^" en código, y cómo activo el bit 5?
Los operadores bit a bit son la base de muchos trucos de bajo nivel: máscaras de permisos (`chmod` en Unix), bit flags, optimizaciones numéricas (`x & 1` en lugar de `x % 2`), análisis de protocolos de red (flags TCP, colores RGBA), gestión de memoria.
Escribe dos números en A y B (como dec, hex 0x, bin 0b, oct 0o, autodetectado), elige el ancho (8 bits, 16 bits, 32 bits, 64 bits) y mira cada operación en vivo: AND, OR, XOR, NOT, shifts, rotaciones, popcount, bit menos significativo.
Cada resultado se muestra en una cuadrícula de bits (haz clic en un bit para invertirlo), en binario, dec (con y sin signo), hex y oct. Se calcula con BigInt para que los valores de 64 bits funcionen correctamente incluso por encima de `Number.MAX_SAFE_INTEGER`.
Cómo se usa
- Elige un ancho: 8 / 16 / 32 / 64 bits. Decide cuántos bits tiene el operando y cómo se detecta el desbordamiento.
- Activa Signed si quieres que los valores se interpreten como complemento a dos (p. ej. -1 en 8 bits = 0b11111111).
- Introduce A y B. Acepta cualquier formato: `255`, `0xFF`, `0b11111111`, `0o377`. El formato se detecta por el prefijo.
- Pulsa un bit en la cuadrícula para alternarlo. Las operaciones se recalculan al instante; los 12+ resultados se actualizan en vivo.
- Para shifts y rotaciones, fija n con el deslizador. Para operaciones de un solo bit (set/clear/toggle/test) fija el bit N.
- "Resaltar bits que cambian" muestra en naranja qué bits ha cambiado la operación: perfecto para ver qué hace realmente `XOR` o `<<`.
- Copia cualquier resultado en cualquier formato (BIN, HEX, OCT, DEC) con un clic.
Cuándo te resulta útil
Situaciones reales donde necesitas conocer las operaciones bit a bit:
- Permisos de archivo en Unix: `chmod 755` es una máscara de bits. `rwxr-xr-x` = `0b111101101` = 0o755 = 493 dec. Cada bit es un flag (read/write/execute × owner/group/other).
- Flags TCP/IP: la cabecera TCP tiene 9 bits de flag (SYN, ACK, FIN, RST, PSH, URG...). Un parser los decodifica con máscaras: `flags & 0x01` es FIN, `flags & 0x02` es SYN, etc.
- Colores RGBA: 32 bits empaquetan 4 canales de 8 bits cada uno. `red = (color >> 24) & 0xFF`, `green = (color >> 16) & 0xFF`, etc.
- Flags de configuración: las librerías C/Rust pasan decenas de opciones como un solo entero. `OPT_ASYNC | OPT_VERBOSE | OPT_RETRY`. Se comprueba: `if (opts & OPT_ASYNC)`.
- Funciones hash y cripto: las implementaciones de MD5, SHA, AES usan rotaciones (`ROL`, `ROR`), XOR y shifts. Normalmente 32 bits.
- Índices bitmap en bases de datos: Postgres, Oracle y MySQL usan operaciones bit a bit para filtrar.
- GPIO de hardware: Arduino, ESP32 o Raspberry Pi controlan pines con `PORTB |= (1 << 5)`. Cada bit = estado del pin.
- Máscaras de direcciones de red: `192.168.1.0/24` es la máscara `0xFFFFFF00`. Para comprobar si una IP está en la red: `(ip & mask) == network`.
- Algoritmos: bitset como conjunto compacto, Brian Kernighan para popcount, criba de Eratóstenes sobre bits, árbol de Fenwick.
Para convertir entre bases numéricas, mira nuestro conversor de base numérica. Para conversiones de tamaño de bytes, mira el conversor de tamaño de archivos.