Por qué el número 2.147.483.647 es especialmente importante

Iniciado por El_Andaluz, 2 Agosto 2015, 05:09 AM

0 Miembros y 1 Visitante están viendo este tema.

El_Andaluz


¿Sabes de la existencia del número 2147483647? Probablemente no, pero ahora sabrás por qué es tan importante en el mundo de la tecnología.

Existen humanos extraordinariamente inteligentes que entienden números y matemáticas de una manera poco común. Hay otras personas, como yo, que nunca han sido muy hábiles con los números y es por eso que terminan dedicando su vida a otras áreas. Sin embargo, cualquier amante de la tecnología sabe que los ordenadores trabajan con números en su nivel más básico y por esta misma razón, es fácil asumir que los ordenadores y los números siempre se llevan bien. Esto no es totalmente cierto.

Aparentemente, existe un bug de software muy simple que hace que muchos computadores, sin importar cuál sea su finalidad, dejen de funcionar completamente en frente de un número: 2.147.483.647. Este número tiene un poder tan fuerte que puede crear explosiones en cohetes, hacer que aviones "desaparezcan", romper el Internet y cosas un poco menos desastrosas, como detener los contadores de visitas en vídeos de YouTube, o la cantidad de puntos ganados en un juego.

¿Qué se trae 2.147.483.647?

2.147.483.647 se le lee como: dos mil ciento cuarenta y siete millones, cuatrocientos ochenta y tres mil, seiscientos cuarenta y siete. Leonhard Euler, un matemático y físico suizo, probó en 1772 que era el número primo más grande que existía, y continúo teniendo este puesto hasta 1851.

Después de tener un comienzo tan importante en el mundo de las matemáticas, también ha tenido una historia interesante en el área de la computación. Este número es el valor positivo máximo que un sistema de 32-bit puede tener. Puede ser que esto no suene como un problema realmente porque se trata de un número enorme con 10 dígitos, pero la verdad es que sí lo es, porque cuando un sistema de 32-bit se enfrenta a la posibilidad de obtener números mayores a él, se creará un error llamado "desbordamiento aritmético".

Cuando el desbordamiento aritmético se vuelve un problema

Quizás el desbordamiento aritmético no suene como gran cosa en situaciones como la que se le presentó a YouTube durante diciembre de 2014 cuando el vídeo que hizo famoso a PSY, "Gangnam Style", llegó a las 2.147.483.647 views y el sistema de 32-bit de la web de vídeos no pudo continuar contándolas porque simplemente había llegado a su máximo. Pero esto sí es un problema cuando se usan sistemas de 32-bit para misiones espaciales y aviones comerciales.

El 4 de junio de 1996 despegó el primer vuelo del cohete Ariane 5 manejado por la Agencia Espacial Europea. Dentro de él no había una tripulación pero sí estaba cargado con cuatro satélites científicos muy costosos. El vuelo explotó apenas 39 segundos después de despegar, perdiendo alrededor de 370 millones de dólares. Después de un poco de investigación se dieron cuenta que el problema no era más que un bug de software que involucraba el número 2.147.483.647. Aparentemente, Ariane 5 necesitaba una aceleración horizontal mayor que los modelos previos porque su trayecto era distinto, y esto hizo que todos los computadores que controlaban el auto-piloto se confundieran y que comenzara una secuencia para auto-destruirse.

Entendiendo mejor el problema

Muchos lo vivimos durante el Y2K, algunas personas creyeron que cuando terminara el siglo XX, los ordenadores dejarían de funcionar, los aviones se caerían del cielo, y algunos hasta pensaron que los extraterrestres vendrían a buscarlos. El problema real al final de 1999 es que todos los ordenadores estaban programados para tomar los últimos dos dígitos del año para saber en cuál estábamos. Entonces, si era el año 1984, por ejemplo, el ordenador lo denotaba como "84" y nada más. Con la llegada del 2000, el ordenador se confundiría, creyendo que después de 1999 se regresaría a 1900, tomando los dos últimos dígitos del nuevo año.

Esto no se convirtió en un problema porque los sistemas fueron arreglados antes de que lo fuese, pero es un buen ejemplo de lo que sucede con el número 2.147.483.647 en los sistemas de 32-bit cuando llegan a su punto máximo. Afortunadamente, ahora tenemos los sistemas de 64-bit que no sufren de esta limitación.

Fuente: http://blogthinkbig.com/numero-2-147-483-647-especialmente-importante/

Autora: Gabriela González

3n31ch

Muy buen articulo.
+1
PD: Es increíble como funciona la mente humana. Apenas vi el numero, ni si quiera lo lei ni nada, solo vi el numero a la rápida. Lo primero que se me vino a la mente fue INT.

engel lex

... hay una correción... 2147483647 = 231-1 ... es el numero maximo de un sistema de 32 bit con signo... el sistema 32bit soporta hasta 4294967295...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

El_Andaluz

#3
CitarEn informática, el problema del año 2038 (conocido también por el numerónimo Y2K38) podría causar que una parte del software falle en ese año. El problema afecta a los programas que usen la representación del tiempo basada en el sistema POSIX, que se basa en contar el número de segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 (ignorando los segundos intercalares).

Esta representación es un estándar de facto en los sistemas tipo Unix y también en los programas escritos para muchos otros sistemas operativos debido al gran alcance del lenguaje de programación C. En la mayoría de sistemas de 32 bits, el tipo de dato time_t usado para guardar el contador de segundos es un entero de 32 bits con signo, es decir, que puede representar un rango de números entre -2 147 483 648 y 2 147 483 647 (-231 y 231-1; 1 bit para el signo, y 31 para representar su valor en complemento a dos), por lo que el último segundo representable con este formato será a las 03:14:07 UTC del 19 de enero de 2038, cuando el contador llegue a 2 147 483 647. Un segundo después, el contador se desbordará y saltará al valor -2 147 483 648, que causará el fallo de programas que interpretarán el tiempo como que están en 1901 (dependiendo de la implementación), en vez de en 2038. A su vez, esto causaría cálculo y procesamiento incorrecto y causaría un problema mundial.

No hay una forma sencilla de arreglar este problema para las combinaciones existentes de CPU/SO. Cambiar la definición de time_t para usar un tipo de 64 bits rompería la compatibilidad binaria para el software, almacenamiento de datos y, por lo general, cualquier cosa que tenga algo que ver con la representación binaria del tiempo. Cambiar time_t a un entero de 32 bits sin signo afectaría a los programas que hacen cálculos con diferencias de tiempo.

La mayoría de sistemas operativos para arquitecturas de 64 bits utilizan enteros de 64 bits para time_t. La migración a estos sistemas está todavía en proceso y se espera que se complete mucho antes de 2038. Usar un entero de 64 bits retrasaría la fecha del problema unos 2,90 billones de años (2,9 x 1012). Es decir, 220 veces la edad aproximada del Universo.



CitarDiscusión:Problema del año 2038
Usar un entero de 64 bits retrasaría la fecha del problema unos 290 mil millones de años, correspondería al domingo, 4 de diciembre del año 292.277.026.596 a las 15:30:08 UTC, mucho tiempo después de que el sol se haya extinguido.

El Calendario Gregoriano produce un error de un día cada aproximadamente 6.400 años. Esto quiere decir que probablemente el año 6400 y sus múltiplos sean bisiestos, pero es una decisión que todavía no se ha tomado. Esto significa que el 4 de diciembre del año 292.277.026.596 no necesariamente sea domingo. 64.117.137.69 19:00 13 sep 2007 (CEST)

Habria que corregir los computadoras, o los que estan creando Sistemas operativos (como yo y un amigo) para colmo hay gente que hace Sistemas Operativos basados en Unix del cual ese el desastre,ya veremos que dependera del futuro...
https://es.wikipedia.org/wiki/Problema_del_a%C3%B1o_2038

engel lex

lo decia por comentarios como este :P

CitarEste número es el valor positivo máximo que un sistema de 32-bit puede tener.

que es naturalmente un error
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

El_Andaluz

#5
Disculpa sería así:


Citar.. hay una corrección... 2147483647 = 231-1 ... es el numero máximo de un sistema de 32 bit con signo... el sistema 32 bit soporta hasta 4294967295...

CitarPara enteros con signo, utilizando el complemento a dos, el rango es desde −2.147.483.648 (-2^{32 - 1}) hasta +2.147.483.647 (2^{32 - 1} - 1). Estos rangos delimitan los sistemas de numeración comunes que utilizan 32 bits, tales como las direcciones IP o las fechas POSIX (provocando el efecto 2038).


Haber sería así   232 -1=4.294.967.296 y 231 -1 =2.147.483.648