sábado, 12 de septiembre de 2015

x'3C'




Una de las cuestiones que es igual para todo el mundo y a la que nada ni nadie pueden sustraerse es el paso del tiempo. La medición del mismo es cuestión ya humana y hace varios siglos que se adaptaron los sistemas de medición, calendarios y relojes, a los fenómenos naturales que tienen relación con la Tierra y su devenir diario en el universo. Pero otra cuestión es la representación de los valores en los que se plasman las peculiaridades de cada cultura. En cuestión de calendarios, en la actualidad nos regimos por el llamado Gregoriano, que fue implantado por el papa Gregorio XII allá por 1582 y que sustituía al anterior, denominado Juliano, que databa de los tiempos romanos de Julio César en el año 46 antes de Cristo. En el asunto de relojes, el mundo digital está sustituyendo a pasos agigantados al anterior analógico.

Desde hace muchos años, la humanidad utiliza masivamente la numeración arábiga que, contrariamente a lo que muchos pensamos, no fue inventada por los árabes sino por los hindúes, quizá con influencias chinas, aunque llegó a occidente a través de la expansión del Islam. Este sistema hace que los números del cero al nueve sean utilizados posicionalmente para representar cantidades. Sin embargo, a mediados del pasado siglo XX, la computarización de los cálculos motivó la emergencia de un sistema de numeración tan potente como simple, resumido en dos estados, que se pudieran describir como encendido-apagado, si-no, arriba-abajo, activo-inactivo. Habíase establecido la numeración binaria con el bit como unidad de información en el que solo caben los dos valores «0» y «1», hablando en términos numéricos y lo que sería una numeración de base «2» en lugar de la que utilizamos todos de forma común que es de base «10».

Este asunto, un poco enrevesado y difícil de entender en una primera aproximación para personas que no estén familiarizadas con el mundo de la computación y los ordenadores, es básico para que las máquinas, desde grandes ordenadores a pequeños microprocesadores integrados en todos los archiperres que nos rodean, puedan efectuar millones de operaciones en un segundo, a base de manejar muchos bites que cambian su estado de «0» a «1», apagado o encendido, a gran velocidad.

Por operatividad de todo este asunto, la siguiente unidad de información es el byte u octeto, que resulta de agrupar 8 bites. A poca matemática que empleemos, deducimos que el mayor valor numérico que podemos representar en un byte a base de combinar ceros y unos es 256, desde el valor 0 al valor 255, es decir, dos elevado a ocho. Aquí entran varios sistemas de asignar caracteres y signos a las combinaciones de ceros y unos contenidos en los ocho bites de un byte. El más usado en los ordenadores personales es la notación denominada ASCII que hace que un valor binario ‘01100101’ represente la “A” mayúscula y sin acento, por ejemplo, mientras que en otro sistema más extendido en los ordenadores grandes, mainframes, conocido como EBCDIC, esa misma letra “A” mayúscula, y sin acento, está asignada al valor binario ‘110000001’.

Todo este devaneo me sirve para explicar el título de esta entrada en el blog. Un poco de paciencia. Para los humanos es imposible hablar en ceros y unos; sería interminable tener que decir, en código ASCII, ‘0110010101111000011100010110100101110110’ para decir «ANGEL», que pongo entre comillas españolas por no haber utilizado la tilde en la A mayúscula. Por ello se agrupan los valores en una numeración de base dieciséis, hexadecimal, en la que en lugar de existir los diez números presentes en el sistema de base 10, existen dieciséis. Para ello asignaremos al hipotético número 10 la letra A, al 11 la B y así sucesivamente hasta la letra F para el valor 15. Nuestros números hexadecimales están compuestos por dieciséis figuras que serán las comprendidas entre cero y nueve más las figuras A B C D E y F. Con este sistema, para decir “ANGEL “ en hexadecimal no tendremos que emplear esa interminable ristra de unos y ceros y diríamos simplemente ‘6578716976’ en código ASCII o ‘C1D5C7C5D3’ en código EBCDIC, lo que es más corto y más inteligible para expertos programadores aunque igualmente enrevesado para personas corrientes poco versadas en el mundo de la programación de ordenadores. Para aquellos interesados, en la red hay numerosas páginas web con conversores e incluso la calculadora existente en cualquier ordenador personal puede colocarse en versión programador para permitir jugar con estos valores y las conversiones entre ellos.

De toda esta parrafada que le estoy soltando tiene la culpa mi buen amigo Miguel Ángel. Como muy buen informático que es, hace unos años, pocos, se acercaba a cumplir los 60 y, poco tiempo antes de llegar a esa fecha, decidió que dejaba de cumplir los años en decimal, como todo el mundo, y empezaba a cumplirlos en hexadecimal. Dado que cada posición vale dieciséis como hemos visto, para decir 48 en hexadecimal diremos ‘30’ y para decir 60 diremos ‘3C’ De un plumazo se había convertido en treintañero… hexadecimal.

Como hemos hablado al principio, el tiempo transcurre y discurre inexorablemente y esta semana me ha llegado a mí mismo la hora de convertirme en sesentón. Lo llevo bien y no soy de los que esconden los años, como parece deducirse de una frase que me parece ingeniosa y que hace mención a «esos diez maravillosos años que, en la vida de una mujer, transcurren entre los treinta y los treinta y uno». Así pues, sesentón para algunos, me queda el consuelo de ser treintañero para otros… Todo en la vida depende del cristal con que se mire o el sistema de numeración que se utilice.