Bug 2038

Résolu/Fermé
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 - 25 sept. 2009 à 09:03
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 - 26 sept. 2009 à 14:22
Salut à tous!
J'ai un petit conseil ou des avis sur un article de la FAQ : le bug de l'an 2038.
Je sait ce qu'est ce bug et le pourquoi du comment mais le problème est la date de l'astuce :

19 janvier 2038 à 3h14 et 7 secondes


Pourquoi y'aura t'il le bug au bout de 2^31-1 secondes après 1-1-1970 et pourquoi pas 2^32-1 ? Le compteurs sont bien en 32 bit non ?

2^32-1 = 4 294 967 295 ce qui équivaut à un compteur en binaire qui affiche 111111… 31 fois (ajoutez "1" et y'a que des "0" faut de place pour le 32 ème rang).
Avec un compteur qui en est à 2^31-1 on a pas encore entamé le rang 31, le compteur en binaire sera à cet instant 0 1111… Ajoutez "1" et il sera à 1000000… Et là, on peut recommencer à remplir les rangs.

Ce sera lorsque le 31 rang sera complet qu'il y aura la bug, donc bien quand le compteur aura atteint 2^32-1 et non pas 2^31-1.

(2^32 -1 = 2^31 + 2^30 + 2^39 + … + 2^1 + 2^0)


Dans le comptage du bug de l'an 2038 on a considéré 2^31-1 (=2147483648 = Janvier 2038), alors qu'il faut prendre 2^32 =4294967296 = fin mars 2106.
D'ailleurs, pour expliquer que Vista 32 bit ne prend pas les 4Gio, on utilise bien 4 milliard, pas 2Md.



Vous en pensez quoi ?




Si vous voyez mal ce que je veux dire, regardez ceci :

le compteur UNIX a commencé en 1970.
Entre cette date et 2038 et se sont écoulés environ 68 années soit 68*365,25*24*3600 = 2145916800 s
Environ 2 milliards de secondes.

Or 2^32-1 = 4294967295 soit environ 4 milliards de secondes.
Et 2^31-1 = 2147483647 soit environ 2 milliards de secondes.

Donc, pour calculer cette date de 2038, on a pris 2^31-1 au lieu des 2^32-1 correspondant au maximum d'un compteur 32 bit.

5 réponses

xiloa Messages postés 2094 Date d'inscription mercredi 18 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2010 199
25 sept. 2009 à 16:41
Notez bien qu'il reste 29 ans, 3 mois, et 25 jours pour remettre votre copie
0
jeanbi Messages postés 15118 Date d'inscription samedi 9 décembre 2006 Statut Contributeur Dernière intervention 6 février 2023 2 177
25 sept. 2009 à 16:52
bonjour,
me boila fatigue pour 29 ans :-)
d'ailleurs ça me fera 84 serai je encore la pour le voir !!! bof :-(
a+
0
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 1 056
26 sept. 2009 à 13:07
Eh! vous me prennez pas au sérieux c'est ça ? Le bug as-t'il lieu en 2038 ou en 2106 ?
0
xiloa Messages postés 2094 Date d'inscription mercredi 18 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2010 199
26 sept. 2009 à 13:35
salut

https://fr.wikipedia.org/wiki/Bogue_de_l%27an_2038 :

Ce nombre maximum sera atteint le 19 janvier 2038 à 3 h 14 min 7 s (temps universel). Dans la seconde suivante, la représentation du temps « bouclera » (10000000 00000000 00000000 00000000 en binaire) et représentera -2 147 483 648 en complément à deux, et ainsi, l'ordinateur affichera la date du 13 décembre 1901.


... donc ta remarque est bonne, mais à priori, l'explication est là.

soit dit en passant,
Le passage à 64 bits résout le problème définitivement, la date butoir se situant à l'an 292 277 026 596 après J.C. (Soit environ 21 fois l'âge de l'univers !), car les 64 bits permettent à l'ordinateur de pousser la limite à 2⁶⁴ -1 secondes. Mais malgré le succès croissant des ordinateurs à 64 bits, il est possible que de nombreux ordinateurs à 32 bits soient encore actifs en 2038, en particulier dans les systèmes embarqués.

perso je ne partage pas la conclusion. A t on bcp de systeme 16 bits en fonction ?
En 2038, on devrait attaquer avec serenité le débat sur le passage du 128 en 256 bits non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 1 056
26 sept. 2009 à 14:22
merci ! donc en 2038, le compteur aura ateint la fin, étant donné qu'il en garde la moitié avant 1970 et l'autre après. Le total fait bien 138 ans environ.


Pour la fin des 32 et le tout 64, en effet, je pense que l'on y sera largement. Mais il faudra changer aussi les formats de fichiers qui eux affichent date etc en 32 bit.

Avec la quantité d'information que l'on doit traiter jusque là… ça parait colossal. Un peu comme si on devait convertir chaque image de l'internet du jpeg => png (par exemple). Cela semble improbable non ?

quoi qu'il en soit : y'a de quoi se marrer!
0