« La ciencia contra las barbas | Portada del Blog | El astronauta Edgar Mitchell y el 'revival' de Roswell »

¿Qué tiene de especial el 2.147.483.647?

    martes 12.may.2015    por Jesús Hidalgo Bravo    5 Comentarios

2.147.483.647 o lo que es lo mismo, dos mil ciento cuarenta y siete millones cuatrocientos ochenta y tres mil seiscientos cuarenta y siete. ¿Por qué tiene este número su propia página en la Wikipedia? Se trata del octavo número primo de Mersenne pero esto no os dirá nada. Antes de que dejéis de leer os diré que esta aparentemente irrelevante y azarosa cifra es capaz de hacer explotar en segundos un cohete Ariane 5 y, literalmente, “romper” el contador de visitas del Gangyang style, el vídeo más viral de la historia de YouTube.

A5_launch_14may2009_hr

El 4 de junio de 1996, 370 millones de dólares en tecnología punta se esparcían sobre la Guyana Francesa después de volar tan solo 39 segundos, en una de los mayores fracasos en la historia de la ESA. El informe oficial achacaba el accidente a un “error de programación” al reutilizar código de su predecesor (el Ariane 4). Pero detrás de este error de programación se esconde nuestro amigo, el 2.147.483.647, tal y como recoge la BBC.

Imagínate que tienes un coche muy, muy viejo cuyo contador llega hasta 999.999 km. Cuando llegues al kilómetro 1.000.000 el contador volverá al valor 000.000 y vuelta a empezar. Pero en un procesador las cosas son más complicadas. Se trata del mismo tipo de circunstancia que condenó al fracaso al Ariane 5.

 

Los informáticos lo llaman un integer overflow, (que se podría traducir algo así como desbordamiento de entero). Resulta que el número 2.147.483.647 es el valor máximo positivo que puede almacenar un procesador de un ordenador de 32 bits, comúnmente instalado en muchos sistemas de computación, como era el caso del Ariane. El rango de valores naturales que pueden ser almacenados en esta arquitectura va del -2147483648 al 2147483647. Y fuera de ese límite empiezan los problemas.

En el caso del Ariane se descubrió que un proceso que había quedado en el software de una generación anterior de cohetes, el Ariane 4, había capturado una lectura inesperadamente alta, fuera de ese rango. El sistema no pudo manejar esa cifra e inició una secuencia de autodestrucción. Bueno, un pequeño fallo lo tiene cualquiera.

Pero no es la única travesura de nuestro número. Se sospecha que la razón por la cual la Nasa perdió contacto con la sonda espacial Deep Impact en 2013 fue que llegó a uno de estos desbordamientos de enteros.

Y el avión Boing 787 puede estar afectado por un problema similar. La propia Boeing ha detectado un error en la programación de las unidades de control de los cuatro generadores eléctricos principales, que hace que, si estos permanecen encendidos durante 248 días, entren en un modo de protección contra fallos, lo que pararía inmediatamente los cuatro generadores. Y eso, teóricamente, podría pasar en pleno vuelo. El error obliga a reiniciar periódicamente todos los Boeing 787 matriculados en los Estados Unidos. Que 248 días contados en centésimas de segundos sean equivalentes (otra vez) al número 2.147.483.647 no parece muy casual.

¿Pero qué tiene que ver el Ganyang Style –el hit perpetrado por el surcoreano Psy– en todo esto? A principios de diciembre de 2014 la canción excedió el límite posible de visitas de YouTube. Casualmente ese límite estaba situado en 2.147.483.647. Efectivamente, el reproductor fue programado utilizando un contador de valores enteros de 32 bits. Sus informáticos nunca pensaron que un video superaría esa cifra de visitas. Eso es, sin duda, porque no conocían la calidad de la música surcoreana.

 

Al llegar al límite, el contador de visitas pasaría a -2.147.483.647, lo que no tiene ningún sentido. Lamentablemente para muchos, los ingenieros de Google no dejaron que el hit se autodestruyera y actualizaron a un número entero de 64 bits. Ahora el límite está en 9.223.372.036.854.775.808 visitas. A prueba de virales. O al menos eso piensan en Google.

Lo que es seguro que esa cifra aguantará bastante más allá de las 03:14:07 UTC del 19 de enero de 2038. ¿Qué diantres pasará en ese momento? De nuevo el problema estará en los ordenadores de 32 bits, y más concretamente, en el reloj que usan estos sistemas. La fecha que tomaron como referencia es el 1 de enero de 1970 (no me preguntéis por qué) y el tiempo se mide como el número de segundos que han pasado desde entonces. El número máximo de segundos que pueden almacenar son 2.147.483.648, que equivale a unos 68 años, lo que llegará en enero de 2038. Entonces, el contador de esos ordenadores se saldrá del rango de los números positivos y entrará en el intervalo de los números negativos (como le pasaba al vídeo de nuestro querido PSI).

La mayoría de los programadores apuestan por que la fecha se trasladará automáticamente al 13 de diciembre de 1901, 2.147.483.648 segundos antes del 1 de enero de 1970. Es decir, tenemos otro apocalíptico efecto 2000 a la vista. Faltan 23 años pero la verdadera pregunta es: ¿de verdad hay algún procesador actual que vaya a aguantar operativo tanto tiempo?

@jesus_hidalgo

Categorías: Ciencia , Web/Tecnología

Jesús Hidalgo Bravo   12.may.2015 15:39    

5 Comentarios

Gangnam, señor Hidalgo. No Ganyang, ni Gañán, ni nada de eso. Hágame el favor.

martes 12 may 2015, 19:38

Le pregunté a la Fundeu y no me supo responder;) Gracias por la corrección.

martes 12 may 2015, 20:17

Juraría que lo del gañan style fue un huevo de pascua de google, por el comportamiento que tenía éste y porque lo leí en algún sitio.

miércoles 13 may 2015, 19:04

Realmente es un problema a tener muy encuenta a la hora de programar, ya que puede ocurrir en cualquier momento, por ello es necesario especificar claramente el tipo de datos que se usan en vez de usar los genericos que incluye el lenguaje de programación utilizado, ya que el compilador puede "optimizarlos" haciendo que tengan menos bits para su representacion, lo que puede llevar al desastre.

miércoles 13 may 2015, 19:31

Hay una errata. "Al llegar al límite, el contador de visitas pasaría a -2.147.483.647". No pasaría a ese número, pasaría a -2^31 = -2.147.483.648.
Y se eligió esta fecha, 1 de enero de 1970, porque es el tiempo unix más conocido como posix.
Muy buen artículo.

domingo 7 jun 2015, 12:10

Los comentarios de esta entrada están cerrados.

Órbita Laika

Bio Órbita Laika

Yo he visto cosas que vosotros no creeríais: una perra orbitar más allá de Orion. A Goyo Jiménez brillar en la oscuridad cerca de la puerta de Tannhäuser. Este blog nace con la intención de que esos momentos no se pierdan en el tiempo... como lágrimas en la lluvia. www.rtve.es/orbitalaika
Ver perfil »

Síguenos en...

Últimos comentarios