Adloun

De nombreux systèmes comptent le temps en secondes écoulées depuis le…

Exercice supplémentaire · niveau 2 · NSI (première), chapitre 1 — Représenter les entiers · Quand la taille des mots fait des dégâts

Énoncé

De nombreux systèmes comptent le temps en secondes écoulées depuis le 1<sup>er</sup> janvier 1970, dans un entier signé de bits. Quelle est la plus grande valeur atteignable ? À quelle date correspond-elle ? Combien d'années gagnerait-on en passant à bits ?

Corrigé

La borne. Sur bits signés, le maximum est secondes.

La date. ans après

  1. Le calcul exact donne le 19 janvier 2038, à 03:14:07 (temps universel). À la seconde suivante, le compteur déborde et devient : la machine se croit en décembre 1901. C'est le « bogue de l'an 2038 ».

Avec bits. Le maximum devient , soit environ années — de l'ordre de vingt fois l'âge de l'univers. Le problème disparaît définitivement.

Contrôle machine :


import datetime
limite = 2**31 - 1
d = datetime.datetime(1970, 1, 1) + datetime.timedelta(seconds=limite)
print(d)     # 2038-01-19 03:14:07

Prolongement : c'est le même mécanisme qu'au débordement de — huit bits ou trente-deux, la panne est identique. Seule change l'échelle de temps avant qu'elle ne survienne.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.