Encoders & Utilities

Conversor de base numérica

Convierte entre binario, octal, decimal y hexadecimal. Soporta BigInt y operaciones bitwise con anchos firmados.

Bitwise operations

Sobre esta herramienta

Number Base Converter traduce entre binario (base 2), octal (base 8), decimal (base 10) y hexadecimal (base 16). Escriba el valor en cualquiera de los cuatro campos de entrada y los otros tres se actualizan al unísono. Hay aritmética de precisión arbitraria integrada — pegue un hash de 1024 bits y aún así obtiene una respuesta exacta, sin redondeos de coma flotante.

Un segundo panel ejecuta operaciones bit a bit sobre el mismo valor: AND, OR, XOR, NOT, desplazamiento a la izquierda, desplazamiento a la derecha, desplazamiento aritmético a la derecha. Para cada operación elige el ancho del entero (8/16/32/64 bits, con signo o sin signo) para que las representaciones en complemento a dos se muestren correctamente — 0xFF es 255 en u8 pero -1 en i8, y la herramienta etiqueta ambos. Una vista previa binaria en vivo resalta posiciones de bit individuales para que vea exactamente qué cambió.

Cuándo utilizar esta herramienta

  • Leer y escribir flags de configuración. Muchas APIs usan máscaras de bits; convertir 0b10110 a 22 o al revés es un impuesto diario sobre este estilo.
  • Depurar volcados hex. ¿Un byte muestra 0xC0 en memoria? Eso es 192 decimal, 0b11000000 binario.
  • Calcular valores de color. Los colores hex de CSS, los códigos de escape ANSI y los flujos de bytes de formatos de imagen viven en hex.
  • Trabajar con permisos de fichero. 0o7550b111101101 — la conversión es la base de la Chmod Calculator.

Sobre BigInt y anchos con signo

El Number nativo de JavaScript pierde precisión más allá de 2^53. Usamos BigInt para el valor en sí, así que cualquier entero que pueda escribir cabe. Los anchos con signo importan para números negativos: el complemento a dos a 8 bits dice 0b10000000 = -128; a 16 bits el mismo patrón es 32768. La herramienta siempre le muestra ambas interpretaciones para que la correcta esté a un vistazo de distancia.

Preguntas frecuentes

¿Por qué 0xFF se muestra a la vez como 255 y como -1?

Porque el patrón de bytes es el mismo — el significado depende de si lo trata como sin signo (u8 = 255) o como complemento a dos con signo (i8 = -1). El hardware no sabe cuál; el sistema de tipos sí. Mostramos ambas interpretaciones para que pueda leer el valor como su código lo espera. Para enteros más anchos (u32 vs i32) se aplica la misma lógica con puntos de quiebre distintos.

¿Qué tan grande puede ser el número que maneja la herramienta?

Arbitrario — usamos BigInt de JavaScript internamente, así que claves RSA de 4096 bits se convierten igual de fácil que bytes de 8 bits. El panel de operaciones bit a bit necesita un ancho (8 a 64 bits, con o sin signo) para que el complemento a dos esté definido; más allá de 64 bits tratamos todos los valores como sin signo y no mostramos interpretaciones negativas. Para números a escala criptográfica, decimal/hex/binario funcionan todos, pero la tabla bit a bit razonablemente se detiene en 64.

¿Cuál es la convención de prefijos?

La mayoría de ecosistemas coinciden: 0b para binario (Python, JS, Rust), 0o para octal (Python, JS, Rust — la forma antigua con cero inicial pelado está desaconsejada), 0x para hex (universal). Nuestra herramienta acepta entradas con o sin prefijos y siempre emite resultados con la forma con prefijo convencional. C/C++ usa cero inicial pelado para octal (0755), que es una trampa — nunca emitimos esa forma.

¿Por qué el desplazamiento a la derecha se comporta diferente a veces?

Hay dos desplazamientos a la derecha: el lógico (>>>) rellena los bits altos con 0 — usado para valores sin signo. El aritmético (>>) rellena con el bit de signo — preserva el signo de números negativos en complemento a dos. -8 >> 1 = -4 (aritmético) pero -8 >>> 1 = 2147483644 (lógico, 32 bits). La herramienta expone ambos como botones separados.