Representación en tiempo de 32 bits de la edición del año 2038
En la era de Internet, existen oportunidades y crisis. Este puede ser el precio que usted y yo debemos afrontar y pagar. Una vez resuelto el "Error del Milenio", ¿aparecerán nuevos "errores"? La respuesta es sí, "2038" es un nuevo nivel.
Quizás todo el mundo ya sepa cuál es el problema de los ordenadores del año 2000, pero ¿cuándo apareció el problema del año 2038?
Los programas escritos en lenguaje C no encontrarán el problema del año 2000, pero sí el problema del 2038. Esto se debe a que la mayoría de los programas en lenguaje C utilizan una biblioteca de programas llamada "biblioteca de tiempo estándar", que utiliza un formato estándar de 4 bytes o 32 bits para almacenar información de tiempo.
Cuando se diseñó originalmente, este formato de hora de 4 bytes tomó las 0:00:00 del 1 de enero de 1970 (esta vez se llama Época Unix) como punto de partida. El valor es 0. Todos los tiempos posteriores se acumulan segundo a segundo a partir de este tiempo.
Por ejemplo, si el tiempo se ha acumulado hasta el valor 919642718, significa que han pasado 919642718 segundos desde la época Unix. Después de la conversión, deberían ser las 16:18:38 del 21 de febrero de 1999.
La ventaja de calcular el tiempo de esta manera es que después de restar dos valores de tiempo cualesquiera, puede obtener rápidamente el número de segundos entre los dos tiempos y luego puede usar otros programas para convertirlo. y formato fácil de entender de año, mes, día, hora, minuto y segundo.
Si alguna vez has leído algunos libros sobre computadoras, sabrás que el valor máximo de un espacio de almacenamiento de 4 bytes o 32 bits es 2147483647, ¡presta atención! La clave del problema en 2038 está aquí: cuando el tiempo salta segundo a segundo hasta el emocionante último segundo de 2147483647, ¿adivinen qué?
La respuesta es que se convertirá en un número negativo, lo que significa que la hora no es válida. La hora exacta en ese momento son las 03:14:07 de la mañana del martes 19 de enero de 2038. Después de eso, todos los programas en lenguaje C que utilicen esta "biblioteca de tiempo estándar" encontrarán problemas de cálculo de tiempo.
Este es el problema del 2038.
Pero no te pongas demasiado nervioso. El problema de 2038 es relativamente más fácil de resolver que el problema del error Millennium. Simplemente reemplace esos programas con una nueva versión de la "biblioteca de tiempo estándar", por ejemplo, cambie al formato de tiempo de almacenamiento de 8 bytes y 64 bits. Esto no es muy problemático, porque la "biblioteca de tiempo estándar" es una parte relativamente independiente del programa C, y las expresiones de tiempo que contiene tienen su propio conjunto de tipos y parámetros de tiempo (en aquellos hosts grandes que enfrentaron el año 2000, la mayoría de los formatos de tiempo no tengo uno).
Hablando de esto, algunas personas inteligentes y novatos en DDMM deberían poder pensar que Windows NT usa una plataforma operativa de 64 bits y que su hora de inicio es el 1 de enero de 1601, pero cada vez Salta una vez cada 1 nanosegundo, por lo que Windows NT encontrará el problema 2184...
En algunas plataformas que usan 64 bits para representar el tiempo, como DigitalAlpha, SGI, Sparc, etc., verá que su sincronización falla Habría que esperar hasta el fin de los tiempos, eso son unos 292 mil millones de años. En ese momento, el Sol ubicado en el brazo espiral de Orión ya es una enana negra o materia oscura, el brazo espiral de Orión ha sido roto por ondas gravitacionales y la Vía Láctea probablemente se ha convertido en una pequeña cuasi estrella.
Entonces, un consejo para aquellos novatos que planean construir una computadora, a menos que quieran difundir los datos al siguiente universo, una computadora de 64 bits es suficiente.
En resumen, la última vez para 32 bits es el martes 19 de enero de 2038 a las 03:14:07.
La última vez de 64 bits es unos 290 mil millones de años después, 292.277.026.596, 4 de diciembre, 15:30:08, domingo.