1 pièce(s) jointe(s)
Codage d'un entier en python et taille en octet
Sujet : Codage d'un entier en python et taille en octet
Bonjour,
Je me permets de vous solliciter sur une problématique propre à Python sur la codage des entiers et leurs tailles variables respectives.
J'ai essayé d'utiliser mes connaissances en VBA pour transposer ce mode de fonctionnement mais malheureusement je n'arrive pas au même résultat.
J'ai mis en pièce jointe un fichier au format Excel reprenant ce que je vous ai formulé ci-dessous (peut être plus facile à la compréhension.
Hypothèse : 1 octet = 8 bits
Constat : la taille d'un entier (i.e. en utilisant getsizeof) varie en fonction du nombre
Par exemple :
1. a = 2**32-1 => Taille en octet : 28
2. a = 2**32 => Taille en octet : 32 (+ 4 octets)
En utilisant mes connaissances en VBA je sais qu'un "gros" entier (i.e. de type Long) a une taille de 4 octets :
- 1 octets est codé sur 8 bits donc 4 octets sont codés sur 32 bits
- 2^32 => 4 294 967 296 valeurs possibles allant de : -2 147 483 648 à +2 147 483 647
Ce principe n'est pas applicable en Python. En effet :
- 2 147 483 647 valeurs possibles allant de -1 073 741 823 à -1 073 741 823 a une taille de 28 octets
La question qui me tarode :
Pourquoi 28 octets pour 2 fois moins de valeurs possibles qu'en VBA ayant une taille de 4 octets ?
Quelle doit être le raisonnement en Python ?
Merci d'avance de vos lumières,
Cordialement.
El Gringo 123456