Le bug de la date informatique de l’an 200038 sera-t-il le désastre que l’an 2000 n’a pas été ? tableau d’art


Peut-être, mais probablement pas. Le passage à l'an 2000 a nécessité de modifier un tas de programmes pour gérer deux fois plus de chiffres pour l'année, puisque les années sont généralement représentées par 2 chiffres lisibles par l'homme en base 10. La solution consistait simplement à ajouter des chiffres supplémentaires. (En fait, la plupart des gestionnaires de date peuvent gérer les années à 5 chiffres, de sorte qu'ils ne tomberont pas en panne en l'an 10 000.)

Maintenant, que se passe-t-il si vous ne comptez pas les années mais les secondes ? Vous vous heurtez maintenant à une limite différente. Les ordinateurs modernes stockent les dates et les heures comme le nombre de secondes depuis minuit le 1er janvier 1970 UTC. En 2038, ce compteur atteindra 2^31-1=2 147 483 647=un 0 suivi de 31 1. Votre ordinateur compte par un, et soudain le 32ème bit bascule. Sur de nombreux systèmes, ce 32e bit ne représente pas seulement un chiffre, mais aussi le signe du nombre. Donc maintenant, en ajoutant un chiffre (en atteignant 1 suivi de 31 0), au lieu d'atteindre 2^31, vous atteignez -(2^31). Cela va soudainement amener les ordinateurs à penser que c'est 2^31 secondes AVANT le 1er janvier 1970, plutôt que 2^31 secondes après. Cela mettra la date en ~1900. Il y a une solution temporaire possible - si nous traitons la date comme un nombre non signé, nous pouvons utiliser le 32ème bit, permettant des valeurs jusqu'à 2^32-1=4,294,967,295=32 1, mais ensuite vous essayez d'ajouter 1, vous vous retrouvez avec un 1 suivi de 32 0. L'ordinateur oublie le bit 1, ne remarquant que les 32 derniers chiffres (tous des 0), puisque l'heure et la date sont des nombres de 32 bits, et qu'une série de 0 se convertira en nombre décimal 0, et l'ordinateur pensera soudainement que nous sommes à nouveau en 1970. Cela se produira en ~2110.


Une solution plus permanente, mais qui nécessitera un remaniement plus important, consiste à utiliser un nombre de 64 bits pour les dates. 2^64-1=64 uns en binaire=1,844674407E19=presque l'infini, donc nous n'aurons plus jamais à nous soucier de cela.

Mettra-t-on réellement en œuvre ces correctifs ? On peut l'espérer - ils seront probablement en mesure de corriger ou de remplacer tous les systèmes affectés, puisqu'ils l'ont fait en 2000 - mais qui sait, après tout .