Codificación de la información. Sistemas de numeración.

per Victor Carceler darrera modificació 2020-03-25T15:29:51+01:00

Codificación de la información:


La mayoria de los sistemas informáticos actuales son sistemas digitales (también existen los ordenadores analógicos, pero su uso es muy raro). Estos ordenadores digitales trabajan con información representada en binario, por lo tanto, es necesario codificar cualquier información que quiera ser procesada mediante un sistema informático.

Diferentes tipos de información y sus codificaciones más habituales:

Numérica:
Enteros (binario natural, complemento a dos, BCD), coma flotante
Alfanumérica:
ASCII, Unicode (UTF-8, UTF-16)
Multimedia:
Audio (wav, aiff, mp3, ogg), Gráficos (png, jpeg, tiff), Video (mpeg)
Compresión:
Sin pérdida (GZIP, BZIP2, LHA), con pérdida (mp3, ogg, jpeg, mpeg)
Otros:
Cifrado de clave única, cifrado de clave pública, hash o resúmenes

 

Sistemas de numeración:

  1. Binario (base 2): 0, 1
  2. Octal (base 8): 0, 1, 2, 3, 4, 5, 6, 7
  3. Decimal (base 10): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  4. Hexadecimal (base 16): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

 

Tabla de conversión:

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

Hay que observar:

  • Que el hexadecimal es un código más compacto que el binario, pues para representar un valor entre 0 y 15 el hexadecimal necesita un solo dígito mientras que el binario necesita cuatro.
  • En una cifra, no todos los dígitos tienen la misma importancia. Se cide que el bit que está más a la izquierda es el bit de mayor peso (MSB most significant bit), mientras que el bit que está más a la derecha es el de menor peso (LSB least significant bit).
  • A esta forma de 'contar' en binario se la llama binario natural y sólo sirve para codificar valores enteros y positivos. Con N bits se pueden realizar 2N combinaciones diferentes, por tanto se puede contar entre 0 y 2N-1
  • Igual que se puede expresar una cifra decimal como una suma de potencias de 10, una cifra binaria se puede expresar como una suma de potencias de 2 y así obtener su valor decimal:

Decimal: 2005 = 2*103 + 0*102 + 0*101 + 5*100 = 2*1000 + 5 * 1 = Valor decimal 2005

Binario: 1010 = 1*23 + 0*22 + 1*21 + 0*20 = 1*8 + 1*1 = Valor decimal 9

Cuestiones: Cuantos bits son necesarios para codificar ?

  1. un dígito binario

  2. un dígito decimal
  3. un dígito hexadecimal
  4. tres dígitos decimales
  5. tres dígitos hexadecimales

Conversión de binario natural a decimal:

Dado un dato binario natural, para obtener su valor decimal se debe escribir cada bit que lo compone, multiplicado por el peso correspondiente. El peso de un bit se obtiene al elevar 2 a la potencia correspondiente a la posición del bit en cuestión.
Ejemplo:

1001 => 1*23 + 0*22 + 0*21 + 1*20 = 8 + 1 = 9

Conversión de un valor decimal a binario natural:

Para obtener la representación en binario natural de un valor decimal (entero y sin signo), se deben realizar sucesivas divisiones (sin decimales) del valor entero entre 2. El cociente de la última división y el resto de las divisiones anteriores indican el valor en binario natural del dato decimal. Hay que notar que el cociente de la última división es el bit de mayor peso, el último resto es el siguiente bit, y el resto de la primera división es el bit de menor peso.
Ejemplo:

Valor decimal a representar en binario natural: 100
dividendococienteresto
100 50 0
50 25 0
25 12 1
12 6 0
6 3 0
3 1 1
1
Por lo tanto, el valor decimal 100 en binario natural es: 1100100
(Hay que leer la tabla de abajo hacia arriba, comenzando por el último dividendo y siguiendo con el resto de cada división)

BCD Binary Coded Decimal

El código BCD se utiliza para representar valores enteros sin signo. Su utilidad radica en que resulta sencillo operar en binario con valores decimales codificados en BCD.
Puesto que en BCD se utilizan 4 bits para codificar cada dígito (unidad, decena, centena ...) del valor decimal, la conversión entre BCD y decimal es inmediata, sólo hay que hacer grupos de 4 bits y convertir independientemente cada grupo.
La principal característica de BCD es también su principal inconveniente, pues al utilizar 4 bits para representar cada dígito decimal se está utilizando más información de la necesaria.
Existe una versión de BCD llamada BCD Extendido, en este caso aún se desperdicia más información pues se utiliza todo un octeto binario para cada dígito decimal.

BCDdecimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9

Ejemplo:

Si pretendemos representar el valor decimal 6554781 en BCD deberemos utilizar un grupo de 4 bits para cada cifra:

Decimal: 6554781 => BCD: 0110 0101 0101 0100 0111 1000 0001

Hemos utilizado un total de 28 bits. Si sólo contásemos con 8 bits, en BCD podriamos representar valores entre 0 y 99, sin embargo en binario natural podriamos representar valores entre 0 y 255.

Conversión entre Hexadecimal y Binario natural

La relación entre Hexadecimal y binario es muy sencilla, cada cuatro bits binarios forman un dígito hexadecimal.
Ejemplos:

Hex: FF => Binario: 1111 1111
Binario: 1001 1010 => Hex: 9A

 

Herramientas para el cambio de base

  • Las calculadoras gráficas propias de los escritorios Gnome (gnome-calculator) o KDE (kcalc)
  • La herramienta bc de la línea de comandos, que mediante las variables ibase y obase permite definir la base de entrada y salida.