Bug 2038
Résolu
                    
        
     
             
                    le hollandais volant
    
        
    
                    Messages postés
            
                
     
             
            5294
        
            
                                    Statut
            Membre
                    
                -
                                     
le hollandais volant Messages postés 5294 Statut Membre -
        le hollandais volant Messages postés 5294 Statut Membre -
        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.
            
            
                
            
                
    
    
    
        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
                        
                    bonjour, 
me boila fatigue pour 29 ans :-)
d'ailleurs ça me fera 84 serai je encore la pour le voir !!! bof :-(
a+
    
                me boila fatigue pour 29 ans :-)
d'ailleurs ça me fera 84 serai je encore la pour le voir !!! bof :-(
a+
                        
                    salut 
https://fr.wikipedia.org/wiki/Bogue_de_l%27an_2038 :
... donc ta remarque est bonne, mais à priori, l'explication est là.
soit dit en passant,
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 ?
                
                
    
                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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
                        
                    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!
    
                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!
