En las ciencias informáticas, todo dato que queramos utilizar es guardado dentro de una “variable”, la cual ocupa un espacio en la memoria principal del computador. Hay variables que tienen mayor capacidad que otras, ya que no para todo necesitamos el mismo espacio.

Ejemplo: necesito crear un programa que me administre personas.

Podría yo – como niño rata- inmediatamente pensar en utilizar una variable de 8 bits para almacenar la edad de la persona, ya que en 8 bits (1 Byte) puedo almacenar cualquier número que esté dentro del intervalo [-128 , 127] o [0 , 255]. Obviamente es prácticamente imposible tener una edad mayor a 255, entonces parece razonable utilizar esta medida (espero no tener que contabilizar a Matusalén en este programa). Para guardar el teléfono necesito una variable más grande, así que utilizaré un “Entero” que es de 32bits, pudiendo guardar valores que están dentro del intervalo [0 , 4.294.967.295], pero ¿qué pasa cuando necesito guardar un valor más grande que ese?

Binario

Como vemos en este artículo, los sistemas de 32 bits sólo pueden utilizar variables de ese tamaño, lo cual aunque 232 pareciera ser un número gigante, hay veces que podemos “quedar cortos”.

Problema del año 2038 (Y2K38)

En la siguiente animación, podemos notar que la fecha y hora de un sistema, está guardada dentro de una variable de 32 bits. Esta variable en realidad cuenta cuántos segundos transcurren desde el 1 de enero de 1970 en adelante, y lo que hace es transformar esos segundos a la fecha correspondiente. Desafortunadamente para esta variable, después del 18 de enero del 2038, sobrepasará su límite, quedando sin capacidad y podría causar un problema mundial.

Bug Y2K38

¿Por qué esto no nos preocupa o no nos alarma?

Los sistemas operativos de 64 bits, están apoderándose casi por completo del mercado. Estos sistemas ocupan en su lugar, una variable de 64 bits para almacenar la fecha/hora, lo que soluciona de inmediato este problema y queda espacio de sobra para millones de años más.

Sin embargo, aún quedan muchos de 32 bits, el ejemplo más grande de los sistemas x86 son los Smartphones Android. Hasta el momento la gran mayoría de estos terminales son de esta arquitectura.

Mirad el siguiente ejemplo:

Intentaré cambiar la fecha de este terminal Android que cuenta con la última versión (Marshmallow 6.0.1):

Cambiar Fecha

Misteriosamente… sólo puedo llegar al año 2037.

Aun así, esto no es motivo de alarma (creo), se espera que de aquí al año 2038, ya todas las máquinas funcionen con arquitecturas de 64 bits o más, quedando este problema en el olvido, al igual que el famoso año 2000, donde supuestamente todo quedaría sumergido en caos.

Brevenota nerd

A propósito de quedar cortos de espacio…

En la época donde los dinosaurios dominaban la Tierra, por ahí por los años 80, el popular juego Pac-Man, almacenaba su contador de niveles en una variable de 1Byte, por lo tanto sólo podía llegar su contador a 255 (tal como lo expliqué más arriba), es por esto que cuando llegaba al nivel 256, el juego “se iba a la B”.

Pacman

Este problema se solucionó rápidamente, usando una variable de mayor capacidad.