Читать книгу La carrera digital - Ignacio G.R. Gavilán - Страница 14
Codificación
ОглавлениеCodificar la información es traducirla del mundo real a un formato cerrado, conocido y procesable por un computador. En el mundo digital, el formato se traduce en último término a una secuencia de unos y ceros. Se conoce como bit la cantidad mínima de información. Un bit sólo puede tomar dos valores alternativos, lo que en el mundo digital denominamos uno o cero.
Vamos a ver tres casos que nos pueden ayudar a comprender este concepto. Y lo vamos a hacer, intencionadamente, con casos muy sencillos para luego mencionar situaciones más complejas y también más reales.
Primero veamos cómo se codifican números enteros. En este caso, simplemente, se traducen a lo que se denomina codificación en base 2. En lo que sigue, vamos a suponer que el lector conoce cómo se realiza esta codificación, pero, a modo de ejemplo, veamos cómo se codificarían en un byte (que es como se conoce a un grupo de ocho bits) los números del 0 al 9.
Número entero (decimal) | Número entero binario |
0 | 00000000 |
1 | 00000001 |
2 | 00000010 |
3 | 00000011 |
4 | 00000100 |
5 | 00000101 |
6 | 00000110 |
7 | 00000111 |
8 | 00001000 |
9 | 00001001 |
Veamos ahora un ejemplo de codificación de texto, y para ello recurrimos al tradicional código ASCII. ASCII (American Standard Code for Information Interchange) fue uno de los primeros sistemas de codificación de textos. En concreto, se creó en 1963 por la American Standard Association aplicado al alfabeto latino. ASCII codifica 128 caracteres diferentes, incluyendo las letras en mayúsculas y minúsculas, dígitos del ٠ al ٩ y varios signos de puntuación. En realidad, lo que hace ASCII es asignar un número entero a cada carácter o signo. Luego representa cada carácter o signo como la codificación del número entero correspondiente. Veamos en la tabla la codificación de las letras mayúsculas en ASCII. Por cada letra, se observa el número que se le asigna y su codificación en un byte.
A | B | C | D | E | F | G |
65 | 66 | 67 | 68 | 69 | 70 | 71 |
01000001 | 01000010 | 01000011 | 01000100 | 01000101 | 01000110 | 01000111 |
H | I | J | K | L | M | N |
72 | 73 | 74 | 75 | 76 | 77 | 78 |
01001000 | 01001001 | 01001010 | 01001011 | 01001100 | 01001101 | 01001110 |
O | P | Q | R | S | T | U |
79 | 80 | 81 | 82 | 83 | 84 | 85 |
01001111 | 01010000 | 01010001 | 01010010 | 01010011 | 01010100 | 01010101 |
V | W | X | Y | Z | ||
86 | 87 | 88 | 89 | 90 | ||
01010110 | 01010111 | 01011000 | 01011001 | 01011010 |
¿Cuál sería, según esto, la codificación binaria de una letra «L» usando ASCII? Pues, buscando en la tabla de arriba, vemos que sería la secuencia: «01001100».
Por último, vamos a hacernos una idea de cómo se puede codificar de manera simple una imagen. De nuevo, pensamos en el caso más sencillo, una imagen en blanco y negro.
Imaginemos que tenemos una figura sencilla. Vamos a escoger el famoso perfil del director Alfred Hitchcock.
Ilustración 1. Perfil de Alfred Hitchcock.
Para codificar esa figura vamos adoptar una técnica muy simple. Colocamos encima de la figura una cuadrícula de 64 filas y 64 columnas. Ahora, las cuadrículas en negro o donde predomine el negro las marcamos con un 1. La cosa quedaría, más o menos, así:
Ilustración 2. Perfil de Alfred Hitchcock marcado con unos.
No es difícil entrever el perfil del cineasta, ¿verdad?
Pues ahora, para completar nuestra sencilla digitalización, marcamos con un cero aquellas cuadrículas en blanco o donde predomine el blanco. Este es el resultado:
Ilustración 3. Perfil de Alfred Hitchcock con unos y ceros.
Si ahora queremos trasladar eso a bytes, tendríamos un bit para cada recuadro de la cuadrícula, bits que, agrupándolos de ocho en ocho, nos llevarían a ocho bytes para representar una fila (cada byte, recordemos, incluye ocho bits) y un total de 512 bytes para representar la figura (64 filas a ocho bytes cada una). Tras hacer estas operaciones, así es como quedaría finalmente codificada nuestra figura:
00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 |
00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 |
00000000 | 00000000 | 00000000 | 00001100 | 00000000 | 00000000 | 00000000 | 00000000 |
00000000 | 00000000 | 00000000 | 11111111 | 11110000 | 00000000 | 00000000 | 00000000 |
00000000 | 00000000 | 00000001 | 11111111 | 11111111 | 00000000 | 00000000 | 00000000 |
00000000 | 00000000 | 00000111 | 11111111 | 11111111 | 11100000 | 00000000 | 00000000 |
00000000 | 00000000 | 00011111 | 11111111 | 11111111 | 11111000 | 00000000 | 00000000 |
00000000 | 00000000 | 00111111 | 11111111 | 11111111 | 11111110 | 00000000 | 00000000 |
00000000 | 00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 00000000 | 00000000 |
00000000 | 00000000 | 11111111 | 11111111 | 11111111 | 11111111 | 10000000 | 00000000 |
00000000 | 00000001 | 11111111 | 11111111 | 11111111 | 11111111 | 10000000 | 00000000 |
00000000 | 00000011 | 11111111 | 11111111 | 11111111 | 11111111 | 11000000 | 00000000 |
00000000 | 00000011 | 11111111 | 11111111 | 11111111 | 11111111 | 11100000 | 00000000 |
00000000 | 00000111 | 11111111 | 11111111 | 11111111 | 11111111 | 11110000 | 00000000 |
00000000 | 00000111 | 11111111 | 11111111 | 11111111 | 11111111 | 11110000 | 00000000 |
00000000 | 00001111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000000 | 00001111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000000 | 00001111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111100 | 00000000 |
00000000 | 00001111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000000 | 00011111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000000 | 00011111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000000 | 00111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000001 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000011 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11110000 | 00000000 |
00000111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11110000 | 00000000 |
00000111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11110000 | 00000000 |
00000111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11100000 | 00000000 |
00000011 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11000000 | 00000000 |
00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11000000 | 00000000 |
00000000 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11000000 | 00000000 |
00000000 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11000000 | 00000000 |
00000001 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 10000000 | 00000000 |
00000001 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 10000000 | 00000000 |
00000000 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 00000000 | 00000000 |
00000001 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 00000000 | 00000000 |
00000001 | 11111111 | 11111111 | 11111111 | 11111111 | 11111110 | 00000000 | 00000000 |
00000000 | 00111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 | 00000000 |
00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 11111100 | 00000000 | 00000000 |
00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 11111110 | 00000000 | 00000000 |
00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 11111110 | 00000000 | 00000000 |
00000000 | 00111111 | 11111111 | 11111111 | 11111111 | 11111111 | 00000000 | 00000000 |
00000000 | 00001111 | 11111111 | 11111111 | 11111111 | 11111111 | 10000000 | 00000000 |
00000000 | 00000011 | 11111111 | 11111111 | 11111111 | 11111111 | 10000000 | 00000000 |
00000000 | 00000001 | 11111111 | 11111111 | 11111111 | 11111111 | 11000000 | 00000000 |
00000000 | 00000000 | 11111111 | 11111111 | 11111111 | 11111111 | 11100000 | 00000000 |
00000000 | 00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 11110000 | 00000000 |
00000000 | 00000000 | 00111111 | 11111111 | 11111111 | 11111111 | 11111000 | 00000000 |
00000000 | 00000000 | 00011111 | 11111111 | 11111111 | 11111111 | 11111100 | 00000000 |
00000000 | 00000000 | 00000111 | 11111111 | 11111111 | 11111111 | 11111110 | 00000000 |
00000000 | 00000000 | 00001111 | 11111111 | 11111111 | 11111111 | 11111110 | 00000000 |
00000000 | 00000000 | 00011111 | 11111111 | 11111111 | 11111111 | 11111110 | 00000000 |
00000000 | 00000000 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 10000000 |
00000000 | 00000001 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 10000000 |
00000000 | 00000011 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11000000 |
00000000 | 00000011 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11000000 |
00000000 | 00000111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11100000 |
00000000 | 00001111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11100000 |
00000000 | 00001111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11110000 |
00000000 | 00011111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11110000 |
00000000 | 00011111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 |
00000000 | 00111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111000 |
00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111100 |
00000000 | 01111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111111 | 11111100 |
Por supuesto, las codificaciones que se han comentado hasta ahora son extremadamente sencillas. En la realidad los formatos de codificación de información suelen ser bastante más complejos y permiten almacenar más información, mucho más rica y de manera más compacta que lo que hemos mostrado.
Así, por ejemplo, formatos como GIF, JPEG o PNG permiten almacenar imágenes. Formatos como MP3 o WAV almacenan sonido. En vídeo (en general con sonido incluido) nos encontramos por ejemplo con MPEG, AVI o MOV. Y más que texto simple se suelen manejar formatos de documento como DOC o PDF, que incluyen información de formateado del texto, así como imágenes, tablas, etc.
Antes de abandonar el tema de la codificación, interesa resaltar que incluso el comportamiento, los algoritmos, se puede codificar digitalmente. Para entenderlo, basta saber que los microprocesadores y los microcontroladores, es decir, el cerebro de los ordenadores, las tablets, los smartphones o los robots, manejan un número limitado de instrucciones con sus parámetros. Para codificar el comportamiento, las instrucciones del microprocesador se pueden codificar asignando, simplemente, un número entero diferente a cada instrucción. Y ya sabemos cómo se puede codificar un número entero. Los parámetros de la instrucción (número, caracteres, etc.) se codifican digitalmente, a su vez, como corresponda según el tipo de dato: texto, número, etc.