Herramienta de Conversión de Base
Convierte entre binario, octal, decimal, hexadecimal y bases personalizadas al instante
Base de entrada
¿Qué es la conversión de base numérica?
La conversión de base numérica es el proceso de cambiar un número de un sistema numérico a otro. Las bases comunes incluyen binario (base 2), octal (base 8), decimal (base 10) y hexadecimal (base 16).
En informática, el binario es el sistema numérico más fundamental, ya que todos los datos dentro de los ordenadores se almacenan en binario. El hexadecimal se usa ampliamente para direcciones de memoria y valores de color porque es más compacto y legible que el binario.
Un conversor de bases es útil cuando hay que leer o comparar valores en decimal, binario, octal, hexadecimal u otros sistemas. Los casos habituales incluyen programación, máscaras de bits, direcciones de memoria, valores de color, protocolos, enseñanza y desarrollo embebido. Las precauciones principales son signo, prefijos como 0x, ceros iniciales, agrupación y tamaño máximo de entero del sistema destino. Una conversión matemáticamente correcta puede diferir de cómo un lenguaje almacena valores con signo o desbordados.Cómo usar
Cómo usar
- Introduce el número que deseas convertir en el campo de entrada (por ejemplo, 255, FF, 11111111)
- Selecciona la base del número de entrada: binaria, octal, decimal, hexadecimal o una base personalizada
- La herramienta muestra automáticamente los resultados en binario, octal, decimal y hexadecimal
- Haz clic en el botón 'Copiar' junto a cualquier resultado para copiarlo al portapapeles
Consejos de conversión
- Asegúrate de que los dígitos introducidos sean válidos para la base seleccionada; por ejemplo, el binario solo acepta 0 y 1, mientras que el hexadecimal acepta 0-9 y A-F.
- Los enteros grandes pueden superar el rango seguro de números de JavaScript en algunos flujos de trabajo, así que verifica los valores de ingeniería críticos con una herramienta dedicada de precisión arbitraria.
Casos de uso
Principio técnico
La conversión de base es aritmética de notación posicional. Un dígito d en la posición p en base b contribuye d × bᵖ al valor total, y el valor de un número de N dígitos es Σᵢ₌₀..N₋₁ dᵢ × b^(N-1-i). El sistema decimal es base 10, binario es base 2, octal es base 8, hexadecimal es base 16. Dos algoritmos hacen todo el trabajo: para convertir de base b₁ a base 10, se evalúa el polinomio (el método de Horner es la forma estándar in situ: `value = value * b₁ + digit`); para convertir de base 10 a base b₂, se divide repetidamente por b₂ y se recogen los residuos, luego se invierten. Ambos algoritmos son O(N) por dígito y O(1) en espacio extra, y funcionan para cualquier base del 2 al 36 (dígitos '0'-'9' + 'A'-'Z' como 10-35). La mayoría del trabajo práctico de conversión de base omite el paso decimal intermedio y va directamente entre bases que son potencias de dos. Binario ↔ octal agrupa 3 dígitos binarios por dígito octal (porque 2³ = 8), y binario ↔ hex agrupa 4 dígitos binarios por dígito hexadecimal (2⁴ = 16). Por eso 0xFF = 11111111₂, 0755 (octal, el modo de archivo Unix) = 111101101₂ = 493 decimal. La página también maneja base 32 (RFC 4648 §6, usado en algunos tokens de autenticación) y base 36 (el alfabeto tradicional compacto para acortadores de URL '0'-'9' + 'A'-'Z'), donde la conversión a binario es la única forma sensata ya que 36 no es potencia de 2. Esta página usa las funciones integradas de JavaScript parseInt(value, base) para el análisis y (123).toString(base) para la salida. Ambas están limitadas a la precisión de Number: un IEEE 754 binary64 tiene una mantisa de 53 bits, por lo que valores enteros mayores que 2⁵³ - 1 = 9.007.199.254.740.991 pierden precisión. Por ejemplo, Number.MAX_SAFE_INTEGER + 1 es igual a Number.MAX_SAFE_INTEGER + 2 — los dos grandes valores no son representables. Para conversión de base de enteros de precisión arbitraria, BigInt es el camino moderno: la lógica tipo parseInt en BigInt es directa, y BigInt.prototype.toString(base) maneja cualquier base del 2 al 36. Las bibliotecas criptográficas, generadores de UUID y cálculos con números grandes (wallets HD BIP-32, claves RSA) usan BigInt por esta razón. El mismo algoritmo también maneja números con signo y de punto flotante, con matices. En complemento a dos (la representación con signo dominante para enteros de ancho fijo, desde el diseño del IBM System/360 de 1965 hasta cada CPU moderna), -1 es todo unos (0xFFFFFFFF para 32 bits, 0xFFFFFFFFFFFFFFFF para 64), y el bit más alto es el bit de signo. Para convertir un entero negativo en complemento a dos a decimal, se resta 2ⁿ (donde n es el ancho en bits). Para números de punto flotante, IEEE 754 binary64 almacena signo (1 bit), exponente (11 bits, con sesgo de 1023) y mantisa (52 bits, con un 1 implícito inicial). La conversión decimal de un binary64 arbitrario no es exacta — 0,1 en IEEE 754 es 0,1000000000000000055511151231257827021181583404541015625, razón por la cual el código financiero usa centavos enteros o bibliotecas decimales en lugar de float.
- Notación posicional: un dígito d en la posición p en base b contribuye d × bᵖ. El valor completo de un número de N dígitos es Σᵢ dᵢ × b^(N-1-i). El método de Horner evalúa esto en tiempo O(N) y espacio O(1): `value = value * b + digit`.
- Para convertir de decimal a base b, se divide repetidamente por b y se recogen los residuos; leyéndolos en orden inverso se obtiene la representación destino. El algoritmo es O(N) para una salida de N dígitos.
- Conversión directa binario ↔ hexadecimal: cada dígito hexadecimal son exactamente 4 dígitos binarios, así que 0xFF = 11111111₂. Binario ↔ octal: cada dígito octal son 3 dígitos binarios, así que 0755 = 111101101₂.
- Complemento a dos (usado por toda CPU moderna para enteros con signo): el bit alto es el signo, y los números negativos se codifican como 2ⁿ - |x|. -1 en complemento a dos de 32 bits es 0xFFFFFFFF.
- IEEE 754 binary64 (Number de JavaScript): 1 bit de signo + exponente con sesgo de 11 bits (sesgo 1023) + mantisa de 52 bits con 1 implícito inicial. El entero seguro máximo es 2⁵³ - 1 = 9.007.199.254.740.991; los valores por encima pierden precisión.
- parseInt(value, base) y Number.prototype.toString(base) funcionan para bases 2-36 y usan la mantisa de 53 bits de Number. Para precisión arbitraria, usa BigInt('value', base) y BigInt.prototype.toString(base).
- Base 32 (RFC 4648 §6) y Base 36 ('0'-'9' + 'A'-'Z') necesitan binario como paso intermedio porque 32 y 36 no son potencias de 2 — un dígito no corresponde a un número fijo de bits.
- Caso límite: la división entera con residuo para bases negativas o números negativos en complemento a dos necesita manejo de signo; la página trata la entrada como un valor absoluto sin signo y re-aplica el signo al resultado final.
Ejemplos
Decimal a hexadecimal
Entrada: 255 (decimal)
Salida: FF (hexadecimal)
Nota: se usa comúnmente en valores de color CSS, p. ej. #FF0000 para rojoBinario a decimal
Entrada: 11111111 (binario)
Salida: 255 (decimal)
Nota: valor máximo del binario de 8 bits, es decir, el byte sin signo más grandeHexadecimal a binario
Entrada: 1A3F (hexadecimal)
Salida: 1101000111111 (binario)
Nota: cada 4 dígitos binarios corresponden a 1 dígito hexadecimalOctal a hexadecimal
Entrada: 377 (octal)
Salida: FF (hexadecimal)
Nota: el permiso Unix 377 (rwxrwxrwx) equivale a hex FFBase personalizada (Base-36)
Entrada: ZZ (base-36)
Salida: 1295 (decimal)
Nota: la base-36 usa 0-9 y A-Z; ZZ es el valor de 2 dígitos más grande en ese sistemaPreguntas frecuentes
¿Qué bases se admiten?
Binaria (base 2), octal (base 8), decimal (base 10), hexadecimal (base 16) y bases personalizadas arbitrarias entre 2 y 36. Bases por encima de 36 requieren un alfabeto extendido y quedan fuera del alcance aquí.
¿Cómo se usan las letras en bases superiores?
Las bases por encima de 10 usan letras: A=10, B=11, … F=15 en hex; A=10 hasta Z=35 en base 36. La entrada acepta mayúsculas y minúsculas; la salida es en mayúsculas por defecto.
¿Cómo convierto un número negativo o fraccionario?
Los enteros negativos funcionan directamente: la página los almacena internamente como BigInt de JavaScript o enteros con signo. Los valores fraccionarios (p. ej., 0,5 en decimal → 0,1 en binario) están admitidos pero limitados a unas 15 cifras significativas por la precisión de coma flotante.
¿Cuál es la diferencia entre complemento a dos y signo y magnitud?
El complemento a dos es como las computadoras representan los enteros negativos: el bit más alto indica negativo y el resto codifica el valor más un desplazamiento. Signo y magnitud simplemente invierte un bit de signo. La página suele mostrar signo y magnitud (signo tipo decimal), no el patrón de bits. Usa una calculadora en modo programador si necesitas ver el complemento a dos.
¿Por qué el resultado hex tiene un relleno distinto al de otra herramienta?
Los valores hex pueden o no rellenarse a la izquierda hasta un límite de byte o palabra. 0xff y 0x000000FF son el mismo número, solo se muestran con relleno distinto. La página no rellena automáticamente; añade ceros a la izquierda manualmente si tu contexto lo requiere (p. ej., dirección MAC de ancho fijo, segmento IPv6).
¿Hay límites en el tamaño del número?
BigInt de JavaScript maneja enteros arbitrariamente grandes, así que la conversión entre bases enteras funciona para números de cualquier longitud práctica. La conversión fraccionaria está limitada a las 15-17 cifras significativas de Number.
¿Puedo convertir aquí direcciones IP o códigos de color?
Indirectamente: convierte cada byte por separado. Para IPs en notación con puntos, convierte cada octeto de decimal a hex; para códigos de color #RRGGBB, divídelos en tres pares de bytes. Las herramientas dedicadas de IP y color hacen el parseo por ti.