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 |
12 ejercicios con solución, siempre los mismos y en el mismo orden. Un profesor puede decir «resuelve los casos 3, 7 y 11» y corregir sin ambigüedad. Cada caso dice en qué sistema hay que responder. La corrección es exacta y compara el número, no cómo se escribe: valen los ceros a la izquierda, las minúsculas en hexadecimal, los bits separados en grupos («1010 1100») y los prefijos 0b, 0o y 0x.
Convierte el número decimal 45 a binario usando divisiones sucesivas entre 2. Escribe el resultado en binario.
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: cada señal es un bit, tensión baja = 0 y alta = 1 (5 V en la lógica TTL clásica, bastante menos en los chips actuales). Los ingenieros combinan puertas lógicas AND/OR/XOR que operan en binario. Ej: un sumador de 8 bits = 8 sumadores completos en cascada, cada uno con su suma y su acarreo de salida, y de varias puertas (dos XOR para la suma; dos AND y un OR para el acarreo).
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. Las potencias de 2 salen redondas: 1 GiB = 2^30 bytes = 0x40000000 (8 dígitos hex frente a los 10 de 1073741824). En cambio 1 GB = 10^9 bytes = 0x3B9ACA00, redondo solo en decimal. 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 (kB) = 1000 bytes = 10^3, como todo «kilo»; 1024 bytes = 2^10 es un kibibyte (KiB).
1000. «Kilo» significa 10^3 en el Sistema Internacional, así que 1 kB = 1000 bytes, 1 MB = 10^6 y 1 GB = 10^9. Como en binario 2^10 = 1024 ≈ 1000, durante décadas se escribió «KB» también para 1024 bytes, y de ahí la confusión. En 1998 la IEC (Comisión Electrotécnica Internacional) creó los prefijos binarios: kibibyte (KiB) = 1024 bytes, mebibyte (MiB) = 1024², gibibyte (GiB) = 1024³. Los fabricantes de discos usan los decimales y Windows divide entre 1024 aunque escriba «GB»: por eso un disco de 1 TB (10^12 bytes) aparece como unos 931 «GB», que en realidad son GiB.
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 (1 Ki), 2^16=65.536 (64 Ki), 2^32=4.294.967.296 (4 Gi). 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 el contador se toma módulo 32, así que 1 << 32 vale 1. 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. En Python 2, 078 también era un error de sintaxis, pero 017 se leía en silencio como octal (vale 15, no 17): por eso Python 3 exige el prefijo 0o y rechaza 017.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₁₀