Saltar a contenido

Sistemas de numeración: cómo se representa la información

Por qué existen varias bases

Un ordenador solo distingue dos estados: hay corriente o no la hay, hay carga o no la hay. Por eso toda la información dentro de la máquina —números, texto, imágenes, instrucciones— se acaba representando con ceros y unos.

El problema es que el binario es incomodísimo de leer para las personas. Una dirección de memoria escrita en binario ocupa 32 símbolos. Por eso se usan dos «taquigrafías»:

  • Hexadecimal (base 16): cada dígito resume 4 bits.
  • Octal (base 8): cada dígito resume 3 bits.

Idea clave: el ordenador siempre trabaja en binario. El hexadecimal y el octal no son otra forma de guardar los datos, son otra forma de escribirlos para que un humano pueda leerlos.

Sistema Base Símbolos
Binario 2 0 1
Octal 8 0–7
Decimal 10 0–9
Hexadecimal 16 0–9 y A–F (A=10 … F=15)

En hexadecimal, A–F son dígitos, no letras. Y en octal no existen el 8 ni el 9.

Notación: como 101 significa cosas distintas en cada base, hay que indicarla: 1011₂ o 0b1011, 755₈ o 0o755, 2F₁₆ o 0x2F. En Java escribirás 0xFF.

2. La tabla que hay que saberse

Con estas 16 filas se hacen casi todas las conversiones que necesitaréis:

Dec Binario Hex Dec Binario Hex
0 0000 0 8 1000 8
1 0001 1 9 1001 9
2 0010 2 10 1010 A
3 0011 3 11 1011 B
4 0100 4 12 1100 C
5 0101 5 13 1101 D
6 0110 6 14 1110 E
7 0111 7 15 1111 F

3. Las tres conversiones que hay que saber hacer

a) Binario → decimal. Escribe los pesos encima y suma los que tengan un 1 debajo.

  1   0   0   1   1   1   0   0
128  64  32  16   8   4   2   1
128 +          16 + 8 + 4       = 156

b) Decimal → binario. Divide entre 2 y lee los restos de abajo arriba.

156 ÷ 2 = 78  r 0        Resultado: 10011100₂
 78 ÷ 2 = 39  r 0        Comprobación: 128+16+8+4 = 156 ✔
 39 ÷ 2 = 19  r 1
 19 ÷ 2 =  9  r 1
  9 ÷ 2 =  4  r 1
  4 ÷ 2 =  2  r 0
  2 ÷ 2 =  1  r 0
  1 ÷ 2 =  0  r 1

c) Binario ↔ hexadecimal: el atajo. Como 1 dígito hex = 4 bits, se agrupa de 4 en 4 desde la derecha y se traduce cada grupo con la tabla. No hace falta pasar por decimal.

10011100₂  →  1001 1100  →  9  C  →  9C₁₆
0x3F       →  3    F     →  0011 1111  →  00111111₂

Con el octal es igual pero de 3 en 3 (10011100 → 010 011 100 → 234₈).

Comprueba siempre el resultado volviendo a decimal. Son dos líneas y detecta cualquier error.

4. Dónde aparece esto de verdad

Este apartado no es un ejercicio de matemáticas: es lo que te vas a encontrar en la consola y en el código durante todo el curso.

Dónde Base Ejemplo
Permisos de ficheros en Linux Octal chmod 750 → rwx r-x --- (3 bits por grupo = 1 dígito octal)
Colores en CSS y diseño Hex #FF8000 = R 255, G 128, B 0
Direcciones MAC Hex A4:5E:60:C2:1B:0F
Direcciones IPv6 Hex 2001:0db8::1
Direcciones de memoria y errores Hex 0x7FFD3A2C
Máscaras de red y subredes Binario 255.255.255.0 = 24 unos seguidos
Códigos de carácter Hex 'A' = 65 = 0x41

Dos consecuencias prácticas que conviene retener:

  • 1 byte = 8 bits = exactamente 2 dígitos hexadecimales. Por eso todo lo que se mide en bytes se escribe en hex.
  • Con n bits hay 2ⁿ valores posibles: 8 bits → 0–255 (de ahí los 255 de una IP), 16 bits → 0–65 535 (de ahí los 65 535 puertos TCP).