Le bug 2038 et les entiers 32 bits
Pour comprendre le bug de 2038, il faut saisir comment les nombres sont stockés en informatique.
Le bit, unité de base
Un bit est la plus petite information : il vaut 0 ou 1. Les ordinateurs travaillent en binaire.
Les entiers sur 32 bits
Un entier sur 32 bits utilise 32 chiffres binaires. Il peut représenter un nombre fini de valeurs : $2^{32}$, soit environ 4,3 milliards.
Entier signé et non signé
Un entier non signé ne représente que des valeurs positives. Un entier signé consacre un bit au signe, pour représenter aussi des nombres négatifs.
La plage d'un entier signé 32 bits
Un entier signé sur 32 bits va de $-2^{31}$ à $2^{31}-1$, soit de $-2\,147\,483\,648$ à $2\,147\,483\,647$.
Le timestamp signé
Le temps Unix a longtemps été stocké dans un entier signé 32 bits. Sa valeur maximale est donc 2 147 483 647 secondes.
Convertir cette limite en date
2 147 483 647 secondes après le 1er janvier 1970 nous mènent au 19 janvier 2038, à 03 h 14 min 07 s UTC.
Le débordement d'entier
Quand on ajoute 1 à la valeur maximale d'un entier signé, il « boucle » vers la valeur la plus négative. C'est le débordement (overflow).
L'analogie du compteur
C'est comme un compteur kilométrique qui, arrivé à son maximum, repasse à zéro. Ici, il repasse à une valeur négative.
De 2038 à 1901
Après débordement, le timestamp devient très négatif. Interprété comme une date, il pointe vers décembre 1901.
La solution : le 64 bits
Un entier signé sur 64 bits offre une plage gigantesque : il repousse la limite à des milliards d'années.
Pourquoi le 32 bits a été choisi
À l'origine, la mémoire était précieuse et les machines 32 bits étaient la norme. Le choix était raisonnable pour l'époque.
Une leçon d'informatique
Le bug de 2038 illustre une règle clé : tout format de nombre a des limites qu'il faut anticiper.
Conclusion
Le bug de 2038 naît du débordement d'un entier signé 32 bits utilisé pour le temps. Le passage au 64 bits le résout. Notre Calculatrice du bug Unix 2038 illustre ces notions.
🧮 Utilisez l'outil : Calculatrice du bug Unix 2038 — calcul instantané avec explication pas à pas.