ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
Cine y matematicas : el código ASCII
1. CINE Y MATEMÁTICAS. EL CÓDIGO ASCII
The Martian
Protagonista: Matt Damon
Director: Ridley Scott
José Manuel Ramos González
Dpto. Matemáticas I.E.S. A Xunqueira I
2. CINE Y MATEMÁTICAS. EL CÓDIGO ASCII1
The Martian
Tras la interpretación de un joven díscolo y pendenciero, con un talento fuera de
lo común para las matemáticas, en la película El indomable Bill Hunting (1997), el actor
Matt Damon, bajo la dirección de Ridley Scott, se
convierte en un astronauta que queda aislado en el
planeta rojo y ha de sobrevivir con los pocos
recursos que sus compañeros, creyéndole muerto, le
han dejado en su precipitada marcha.
Mark Watney (Matt Damon) es un botánico
que, encontrándose solo en Marte con provisiones
para unos pocos días, se las arregla para, a partir de
unas bolsas de patatas envasadas, crear toda una
plantación de tubérculos para su subsistencia durante
meses con el abono de las letrinas de su cubículo y el
agua obtenida al mezclar hidrógeno con oxígeno.
Pero también resulta ser un genio de la informática y
las matemáticas, porque para comunicarse con la
Tierra no utiliza el alfabeto ordinario, compuesto de
26 símbolos en inglés (de la A a la Z). El solitario
astronauta se sirve de un código que se utiliza en
informática a diario, pero que está oculto porque
nosotros tan solo vemos en pantalla el resultado final en forma de letras, números o
símbolos: El Código ASCII.
El Código ASCII en el sistema numérico hexadecimal, solamente se sirve de 16
símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (11), B(12), C(13), D(14), E(15), F(16)). ¿Cómo?
Para ello debemos proceder a una explicación previa.
Como todos sabemos los ordenadores, calculadoras, y cualquier tipo de tecnología
basada en la electrónica, solo saben interpretar dos estados. Un circuito electrónico
solamente puede estar “encendido”, es decir por él circula la electricidad, o “apagado”,
por él no fluyen los electrones. Esto es equivalente a on/off, si/no, verdadero/falso,
bueno/malo… Dos estados que conforman el maniqueísmo en religión (aspecto que no
nos ocupa) y la lógica binaria en filosofía, de modo que ese binomio, cuyos
componentes constituyen la unidad mínima de información, se simbolizan por 1 y 0, y
cada uno de los cuales se denomina bit (binary digit).
Cuando utilizamos un procesador de textos, este no reconoce la letra “a” porque el
ordenador solo puede interpretar 1 (circuito por el que circula la electricidad) y 0
(circuito apagado). En realidad, ¿qué se “escribe” en las entrañas del ordenador cuando
pulsamos la tecla correspondiente a la letra “a”? La respuesta es una serie de ocho
dígitos binarios, es decir, 8 circuitos en estado encendido (1) o apagado (0). Esta serie se
denomina byte u octeto en castellano. Nuestra letra “a” es el byte 01100001.
= a
1
ASCII es el acrónimo inglés de American Standard Code for Information Interchange — Código
Estándar Estadounidense para el Intercambio de Información.
3. Esto tiene sus ventajas e inconvenientes. La gran ventaja es que solo utilizamos
dos símbolos, 1 y 0. Sin embargo son ocho, y resulta en exceso largo a la hora de
escribirlo. Lo que se hace entonces, es pasar del sistema binario (base 2) al sistema
decimal (base 10). ¿Cómo?
01100001 = 0.27
+1.26
+1.25
+0.24
+0.23
+0.22
+0.21
+1.20
= 97
Si realizamos las operaciones con las potencias de 2, obtenemos el número 97.
Pues bien, se dice que 97 es el código ASCII decimal del carácter “a”.
También puede utilizarse el Método de Ruffini que se explica en 4º ESO, para
calcular el valor numérico de un polinomio2
. Sería así:
0 1 1 0 0 0 0 1
2 0 2 6 12 24 48 96
0 1 3 6 12 24 48 97
Ahora convertiríamos el número 97 a base hexadecimal, dividiendo
progresivamente entre 16. La expresión a obtener estará formada por los restos de la/s
división/es, tomado/s en orden ascendente y precedido/s del último cociente. Así, 97 se
transforma en hexadecimal del siguiente modo:
97 16
1 6
Por tanto, 97 en base decimal se corresponde con 61 (6 es el último cociente, y 1 es el
resto) en base hexadecimal
(9.10 + 7 = 6. 16 + 1)
Para entenderlo mejor, podemos hacer el procedimiento con el byte 11111111 que
en base 10 será el número 1.27
+1.26
+1.25
+1.24
+1.23
+1.22
+1.21
+1.20
= 255, que
convertido a base 16 o hexagesimal sería:
255 16
15 15
El resto es 15, precedido del cociente último que es 15 también. El número 255,
representado en base 16, será (15)(15), es decir FF.
255 = 2.102
+5.10+5 = 15.16 + 15 = F.16+F
¿Cuántos caracteres podemos escribir con un teclado? Tantos como posibles bytes
distintos hay, desde el byte 00000000 que se corresponde con el 0 decimal, hasta el byte
11111111 que se corresponde, como vimos, con el número 255. A lo sumo tenemos 255
2
En nuestro ejemplo, sería el valor numérico del polinomio x6
+x5
+1, para x = 2.
4. bytes diferentes, por lo que dispondremos de 255 caracteres distintos (aquí se incluyen
espacios, comas, signos de interrogación… etc).
Los que a nosotros nos interesan son los caracteres alfabéticos. Pues bien, por
ejemplo, el carácter “A”, tiene por código ASCII, el número decimal 65 y el
hexadecimal 41, que en ambos casos sería el byte 010000011.
= A
No solamente las letras tienen su código ASCII; los símbolos y caracteres
especiales también. Por ejemplo el símbolo @ tiene por código el número decimal 64, y
el hexadecimal 40, que se correspondería con el byte 01000000. El código decimal 246,
hexadecimal E6 (byte 11110110) corresponde al símbolo de la división ÷.
= @
= ÷
Para obtener en pantalla el símbolo o carácter que corresponde a un código
ASCII, hay que mantener pulsada la tecla Alt y al mismo tiempo escribir en el teclado
numérico el código correspondiente (en base decimal). Una vez que liberemos la tecla
Alt, aparecerá en pantalla el carácter correspondiente a dicho código.
Una interesante prueba es tomar el bloc de notas3
de los accesorios del sistema
operativo Windows y escribir una sola letra o carácter, luego guardar el archivo y
observar en las propiedades de este la capacidad de memoria utilizada para almacenarlo.
Podemos comprobar que son exactamente 8 bits (1 byte).
A continuación podemos ver la tabla del código ASCII en base decimal y
hexadecimal
3
Para esta comprobación no sirve el editor de textos Word, pues este requiere más memoria para guardar
el formato, fuente de letra, tamaño…etc.
5. Para escribir la palabra “Ayuda” en código ASCII decimal tendríamos que indicar
la siguiente serie: 65 121 117 100 97, y en hexadecimal 41 79 75 64 61 (ahorramos 3
caracteres). En este ejemplo evitamos poco trabajo porque la palabra es pequeña, pero
en un párrafo largo, el ahorro es considerable, ya que en el código hexadecimal todas las
letras se corresponden con dos símbolos, mientras que en el decimal, la mayoría se
codifican mediante tres.
Para separar cada carácter insertamos un espacio en blanco.
Si por ejemplo queremos escribir la expresión “Me gusta este artículo”,
enviaríamos el siguiente mensaje:
77 101 103 117 115 116 97 101 115 116 101 97 114 116 105 99 117 108 111
M e g u s t a e s t e a r t i c u l o
Demasiado largo si utilizamos el Código ASCII en base 10 o decimal, pero si lo
hacemos en base hexadecimal, utilizando sus 16 símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A
(10), B(11), C(12), D(13), E(14), F(15), el mensaje anterior se podría componer así:
4C 65 67 75 73 74 61 65 73 74 65 61 72 74 69 63 75 6B 6E.
En este último caso, el mensaje contiene 38 símbolos (De 0 a F), a diferencia de
los 53 utilizando el sistema decimal. Nos hemos ahorrado 18 movimientos, y por tanto
la conversación se hará más rápida y fluida.
El protagonista de la película utiliza el Código ASCII hexadecimal para
comunicarse con la Tierra. Para ello, clava dieciséis estacas en círculo alrededor de una
cámara giratoria (Si tuviese que comunicarse con el alfabeto latino, necesitaría 26
estacas, lo que tendría 13 grados de arco entre las letras, y los receptores tendrían
dificultad para saber a cual de ellas apunta la cámara). En la parte superior de las estacas
coloca un cartel con los números del 0 al 9, más las letras A, B, C, D, E y F, que
6. simbolizan los números 10, 11, 12, 13, 14 y 15 respectivamente. Añade una estaca
complementaria con el símbolo de interrogación. De este modo el arco entre cada estaca
se amplía a 21º. A continuación, dirige la cámara hacia el símbolo que desea. Esa
imagen es recibida por la Tierra, que traduce el código ASCII a lenguaje natural
ordinario. Recíprocamente, desde la Tierra tienen acceso a la movilidad de la cámara, y
le responden dirigiendo la cámara hacia el símbolo que corresponda. Así, si por
ejemplo, desde la Tierra quieren comunicarle la letra mayúscula A, la cámara enfoca
primero al 4 y luego al 1, informando que el código ASCII hexadecimal a comunicar es
41 (65 en decimal). Él solo tiene que acudir a su tabla para comprobar que se trata de la
letra A.
En el fotograma anterior, podemos apreciar las 17 estacas alrededor de la cámara
giratoria. Los 16 símbolos del sistema de numeración hexadecimal, más un cartel con el
signo de interrogación.
Vemos a continuación un fotograma de la película, en el que el protagonista
traduce los mensajes recibidos desde la Tierra, tomando los símbolos del sistema
hexadecimal de dos en dos separados por comas:
7. 48, 4F, 57, 41, 4C, 49, 56, 45?, que traducido a lenguaje natural sería H, O, W, A,
L, I, V, E?, es decir How alive? (¿Cómo estás vivo?)
Gracias a este procedimiento, finalmente la comunicación se establece en forma
progresiva y gracias a las instrucciones procedentes de la Tierra, el astronauta logra
configurar un programa en el sistema de comunicaciones de su habitáculo marciano que
le permite mantener una conversación absolutamente normal, dejando atrás ese método
de codificación numérico que resultaba un tanto lento y tedioso.
The martian es una interesante película que, pese a la ficción con la que Ridley
Scott mantiene en tensión al espectador, demuestra que la ciencia sigue siendo un
poderoso instrumento para resolver problemas que pueden resultar vitales.
José Manuel Ramos González.
I.E.S. A Xunqueira I.
Pontevedra, 18 de noviembre de 2017