ToolActToolAct

Herramienta de Conversión de Base

Convierte entre binario, octal, decimal, hexadecimal y bases personalizadas al instante

Entrada
Resultados de conversión
Binario (2)
Octal (8)
Decimal (10)
Hexadecimal (16)

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

  1. Introduce el número que deseas convertir en el campo de entrada (por ejemplo, 255, FF, 11111111)
  2. Selecciona la base del número de entrada: binaria, octal, decimal, hexadecimal o una base personalizada
  3. La herramienta muestra automáticamente los resultados en binario, octal, decimal y hexadecimal
  4. 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

Inspeccionar un entero en varias bases de programadorElige binario, octal, decimal, hexadecimal o una base personalizada del 2 al 36, y visualiza el mismo valor en base 2, 8, 10 y 16 a la vez. Cada resultado puede copiarse independientemente para pegarlo en código fuente, fragmentos de documentación, tablas de registros o comentarios de revisión donde el mismo número se muestra frecuentemente en dos bases.
Traducir valores de logs, registros y notas de protocoloÚsalo para máscaras de permisos, registros de dispositivo, IDs numéricos pequeños, valores tipo color, flags de bits y ejemplos copiados de documentación donde el mismo número resulta más fácil de interpretar en otra base. La conversión se ejecuta completamente en la página, por lo que direcciones de registro internas, valores de opcode o fragmentos de especificación pueden verificarse sin enviarlos a ningún servicio externo.
Mantener la herramienta dentro de los límites de conversión de enterosLa página usa parseInt y Number.toString de JavaScript, por lo que es más adecuada para notación de enteros sin signo habituales. Enteros muy grandes, valores fraccionarios, formas binarias negativas e interpretación en complemento a dos siguen requiriendo una calculadora específica del dominio.
Decodificar una combinación de flags bit a bitConvierte una máscara de permisos o valor de registro a binario, luego agrupa de 4 u 8 bits para leer flags individuales como 0x1F0 o 0b1010_0001. Resulta útil al documentar bits de permisos POSIX, registros GPIO o feature flags donde cada bit tiene un nombre que el entero por sí solo oculta. La regla de agrupación se basa en la relación 2^4 = 16 entre binario y hexadecimal, de modo que cada 4 bits se mapean siempre a un dígito hexadecimal y cada 3 bits a un dígito octal; el relleno con ceros a la izquierda es lo que hace que un byte de 8 bits (0xFF) se alinee limpiamente a dos dígitos hexadecimales.
Trabajar explícitamente con complemento a dos y anchos con signoCuando el valor fuente es un int8, int16 o int32 con signo, recuerda que la página devuelve la representación sin signo. Convierte manualmente con una fórmula que tenga en cuenta el ancho al interpretar valores negativos de volcados de protocolo, campos de struct o logs de firmware embebido. En complemento a dos, un valor de ancho w bits `v` cuyo bit más alto está activo representa `v - 2^w`, así que el byte de 8 bits `0xFF` es 255 sin signo pero -1 con signo, y la palabra de 16 bits `0x8000` es -32768. El relleno con ceros a la izquierda es significativo para campos de ancho fijo como direcciones MAC, hextets IPv6 o canales de color de 24 bits, y la conversión de base fraccionaria (por ejemplo, decimal `0,625` a binario `0,101`) no está soportada por parseInt/toString y necesita un algoritmo aparte.

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 rojo

Binario 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 grande

Hexadecimal a binario

Entrada: 1A3F (hexadecimal)
Salida:  1101000111111 (binario)
Nota:    cada 4 dígitos binarios corresponden a 1 dígito hexadecimal

Octal a hexadecimal

Entrada: 377 (octal)
Salida:  FF (hexadecimal)
Nota:    el permiso Unix 377 (rwxrwxrwx) equivale a hex FF

Base 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 sistema

Preguntas 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.