Cargando aplicación...
Preparando tu experiencia meskeIA
Convierte entre binario, octal, decimal y hexadecimal con explicación paso a paso
| Decimal | Binario | Octal | Hexadecimal |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Conceptos fundamentales y aplicaciones prácticas
| Criterio | Binario (Base 2) | Octal (Base 8) | Decimal (Base 10) | Hexadecimal (Base 16) |
|---|---|---|---|---|
| Dígitos | 0, 1 | 0-7 | 0-9 | 0-9, A-F |
| Bits por dígito | 1 bit | 3 bits | ~3,32 bits | 4 bits (nibble) |
| Compacidad | Muy verboso | Moderado | Natural | Muy compacto |
| Uso principal | Hardware, electrónica | Unix/Linux (permisos) | Uso cotidiano | Programación, colores |
| Conversión a BIN | Directo | Grupos de 3 bits | División sucesiva | Grupos de 4 bits |
| Ejemplo (42₁₀) | 101010₂ | 52₈ | 42₁₀ | 2A₁₆ |
| Prefijo código | 0b101010 | 052 o 0o52 | (ninguno) | 0x2A |
| Lenguajes | C, Python, ensamblador | C, Python (chmod) | Todos | Todos (colores, memoria) |
El binario es el lenguaje de los circuitos. Un transistor = 1 bit (0V = 0, 5V = 1). Los ingenieros diseñan puertas lógicas AND/OR/XOR que operan en binario. Ej: un sumador de 8 bits = 8 puertas lógicas en cascada.
Base fundamental del hardware#FF5733 es hexadecimal: R=FF(255), G=57(87), B=33(51). CSS, Photoshop y Figma usan hex. Ventaja: 2 dígitos hex = 1 byte de color. rgba(255, 87, 51, 0.8) = #FF5733CC.
chmod 755 usa octal: 7=rwx(111₂), 5=r-x(101₂). Cada dígito octal = 3 bits de permisos. chmod 644 = rw-r--r--. Los sysadmins deben dominar octal.
SHA-256 produce 256 bits = 32 bytes = 64 caracteres hex. abc → ba7816bf8f01cfea... El hexadecimal hace legibles los hashes binarios. Bitcoin addresses son hashes en base58.
Al depurar con GDB o lldb, las direcciones de memoria son hex (0x7fff5fbff8a0). Los dumps de memoria en hexdump. Los registros de CPU en hex. Esencial para ingenieros de sistemas embebidos.
Las IPs en binario: 192.168.1.1 = 11000000.10101000.00000001.00000001. Las máscaras de subred: /24 = 11111111.11111111.11111111.00000000. Los bytes de los protocolos TCP/IP se leen en hex.
Redes y telecomunicacionesLos transistores tienen dos estados estables: conducción (1) y corte (0). Intentar representar 10 estados analógicos es difícil y propenso a errores por ruido eléctrico. El binario es simple, robusto y escalable a miles de millones de transistores.
Cada dígito hex representa exactamente 4 bits (un nibble). Un byte = 2 dígitos hex. 1 GB = 0x40000000 (8 dígitos vs 10 decimales). Más compacto para leer datos binarios. Los colores RGB (0-255) se expresan perfectamente en 2 dígitos hex.
Principalmente en sistemas Unix/Linux para permisos de archivos (chmod). También en C para representar bytes (aunque hex es más común ahora). Históricamente usado cuando los ordenadores tenían arquitecturas de 12 o 36 bits (múltiplos de 3).
Es la forma estándar de representar números negativos en binario. Para negar un número: invierte todos los bits y suma 1. Ventaja: la suma funciona igual para positivos y negativos sin circuitos especiales. Ejemplo: -5 en 8 bits = NOT(00000101) + 1 = 11111011.
n << 1 multiplica por 2 (añade un 0 a la derecha). n >> 1 divide por 2 (elimina el bit menos significativo). Mucho más rápido que multiplicar/dividir. 1 << 10 = 1024 (2^10). Usado en optimizaciones de videojuegos y sistemas embebidos.
Nibble = 4 bits = 1 dígito hex (0-15). Byte = 8 bits = 2 dígitos hex (0-255). Word = depende de la arquitectura (16 bits en x86 legacy, 32 en 32-bit, 64 en 64-bit). Kilobyte = 1024 bytes = 2^10 (no 1000).
En binario, las potencias de 2 son naturales: 2^10 = 1024 ≈ 1000. Los fabricantes de discos usan 1000 (decimal), el SO muestra 1024 (binario). Por eso un disco de "1 TB" aparece como 931 GB en Windows. ISO definió KiB (kibibyte = 1024) para distinguir.
Memoriza: 0=0000, 1=0001, ..., 9=1001, A=1010, B=1011, C=1100, D=1101, E=1110, F=1111. Luego convierte dígito a dígito: 0xAB = 1010 1011. Con práctica se hace en segundos. Trucos: F siempre es 1111, 8 siempre es 1000.
¿De dónde a dónde? Si no es a decimal, siempre pasa por decimal como base intermedia (excepto BIN↔HEX que tienen atajo directo).
Agrupa los bits en grupos de 4 desde la derecha. 10110111 → 1011|0111 → B|7 → 0xB7. Atajo extremadamente útil.
Cada dígito hex = 4 bits. 0x3F → 0011|1111 → 00111111. Simple y reversible.
Multiplica cada dígito por la base elevada a su posición (de derecha a izquierda, empezando en 0). 1011₂ = 1×8 + 0×4 + 1×2 + 1×1 = 11₁₀.
Divide el número por la base repetidamente. Los restos leídos de abajo a arriba son el resultado. 42 ÷ 2: 21r0, 10r1, 5r0, 2r1, 1r0, 0r1 → 101010₂.
Convierte el resultado de vuelta a decimal para comprobar. Si coincide con el original, la conversión es correcta.
Usa esta calculadora para verificar tus conversiones manuales. Los pasos detallados te muestran el proceso completo.
0b para binario, 0o para octal, 0x para hex. int a = 0xFF; es más claro que int a = 255; cuando trabajas con bytes.
4 bits = 1 dígito hex. Convierte en grupos de 4 de derecha a izquierda. Esencial para leer dumps de memoria y hashes criptográficos.
Memoriza rwx=7, rw-=6, r-x=5, r--=4, ---=0. chmod 755 = propietario rwx, grupo r-x, otros r-x. Muy frecuente en administración de sistemas.
2^8=256, 2^10=1024≈1K, 2^16=65536, 2^32=4G. Memorizar estas potencias acelera el trabajo con sistemas de 8, 16, 32 y 64 bits.
valor & 0x0F extrae los 4 bits menos significativos. valor | 0x80 activa el bit 7. valor ^ 0xFF invierte todos los bits.
Windows (Calc→Prog), macOS (Calc→Programmer), Linux (speedcrunch). Para conversiones rápidas sin abrir el IDE.
int x = 0755; NO es 755 decimal, es 755 en octal = 493 decimal. Un bug clásico en permisos de archivos programados en C.char puede ser signed (-128 a 127) o unsigned (0-255) según la plataforma. (char)0xFF = -1 en signed, 255 en unsigned. Usar uint8_t para ser explícito.uint8_t x = 255; x++; → x = 0, sin error ni aviso. En Python los enteros son de precisión arbitraria (no hay overflow). En C/Java/Rust sí ocurre.1 << 32 en C con int de 32 bits es undefined behavior. En JavaScript los bits extras se descartan. Usa BigInt en JS o 1LL << 32 en C para shifts grandes.078 es inválido en octal. En Python 3, 0o78 da error de sintaxis (correcto). En Python 2, 078 era tratado como decimal (bug silencioso).Usa solo 0 y 1. Es el lenguaje nativo de los ordenadores. Cada dígito se llama "bit".
1010₂ = 1×8 + 0×4 + 1×2 + 0×1 = 10₁₀Usa dígitos del 0 al 7. Cada dígito octal representa exactamente 3 bits.
12₈ = 1×8 + 2×1 = 10₁₀El sistema que usamos habitualmente. Usa dígitos del 0 al 9.
10₁₀ = 1×10 + 0×1 = 10₁₀Usa 0-9 y A-F (A=10, B=11... F=15). Muy usado en programación para representar colores, direcciones de memoria, etc.
A₁₆ = 10₁₀ | FF₁₆ = 255₁₀