9 223 372 036 854 775 807 (nombre)

nombre naturel, valeur maximale pour un entier signé 64-bits

Le nombre entier 9 223 372 036 854 776 000 est le nombre de Mersenne M63 = 263 − 1 donc le nombre double de Mersenne MM6. Sa décomposition en produit de facteurs premiers est 72 · 73 · 127 · 337 · 92737 · 649657, qui est égal à Φ3(2) · Φ7(2) · Φ9(2) · Φ21(2) · Φ63(2).

C'est la valeur maximale d'un nombre signé dans certains langages informatiques.

De même, M64 est la valeur maximale d'un nombre non signé.

Présentation

modifier

Le nombre 9 223 372 036 854 776 000, équivalent à la valeur hexadécimale 7FFF,FFFF,FFFF,FFFF16, est la valeur maximale d'un entier signé 64 bits. Il s'agit donc de la valeur maximale pour une variable déclarée comme un entier long (long, long long int ou bigint) dans de nombreux langages de programmation fonctionnant sur des ordinateurs modernes[1],[2],[3]. La présence de la valeur peut refléter un débordement d'entier ou une erreur[4].

Cette valeur est également le plus grand décalage d'adresse signée positive pour les processeurs 64 bits utilisant l'adressage de mémoire à extension de signe (comme l'architecture x86-64, qui appelle cet adressage étendu forme canonique[5]). Comme sa valeur est impaire, son apparition peut refléter une adresse mémoire erronée (mal alignée).

Le type de données de bibliothèque standard C time_t, utilisé sur les systèmes d'exploitation tels qu'Unix, est généralement implémenté comme une valeur entière signée 32 ou 64 bits, comptant le nombre de secondes depuis le début de l'époque Unix (minuit UTC du 1er janvier 1970)[6]. Les systèmes employant un type 32 bits sont sensibles au problème de l'an 2038, de nombreuses implémentations sont donc passées à un type 64 bits plus large, avec une valeur maximale de 263 – 1 correspondant à un nombre de secondes 292 milliards d'années depuis le début de l'époque Unix.

La valeur FILETIME utilisée dans Windows est une valeur de 64 bits correspondant au nombre d'intervalles de 100 nanosecondes depuis minuit UTC du 1er janvier 1601. La dernière heure pouvant être représentée à l'aide de cette valeur est 02: 48: 05.4775807 UTC le 14 septembre 30828 (correspondant à 9 223 372 036 854 776 000 intervalles de 100 nanosecondes depuis le 1er janvier 1601)[7]. Au-delà de ce jour, Windows affichera une erreur "heure système invalide" au démarrage.

D'autres systèmes codent l'heure système sous la forme d'un nombre entier signé de 64 bits du nombre de graduations depuis une certaine date . Sur certains systèmes (comme la bibliothèque standard Java), chaque tic est d'une durée d'une milliseconde, ce qui donne une plage de temps utilisable s'étendant sur 292 millions d'années dans le futur.

En C et C ++, cela est disponible en tant que type de données long long signé ou non ; en C #, long[8]. La constante est disponible aussi en tant quelong.Dans le .NET Framework, il est disponible en tant que structure Int64[9] .

L'équivalent non signé est M64 = 264 – 1 = 18 446 744 073 709 551 615.

Notes et références

modifier
(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « 9,223,372,036,854,775,807 » (voir la liste des auteurs).

en juin 2020, juste avant sa redirection vers en:Power of two#2^63.

  1. Primitive Data Types Oracle Corporation
  2. Saisang Cai, Mike B, Colin Robertson, Mike Jones, Gordon Hogenson, Billy O'Neal, Integer Limits, Microsoft Corporation, 28 janvier 2018.
  3. Bigint data type, The Apache Software Foundation
  4. Integer Overflow, Techopedia
  5. AMD Corporation, « Volume 2: System Programming » [PDF], AMD64 Architecture Programmer's Manual, AMD Corporation, , p. 130.
  6. time_t, cplusplus.com
  7. Thulin, « Interpretation of NTFS Timestamps », Forensic Focus, (consulté le )
  8. long (C# Reference) | Microsoft Docs
  9. Int64 Struct (System) | Microsoft Docs

Articles connexes

modifier