Représentation des données : types et valeurs de base
Ce domaine porte sur la manière dont une machine représente les nombres, les booléens, les textes et l'absence de valeur. En Python, les types de base sont int, float, bool, str et NoneType. L'examen teste les conversions, les bases binaire et hexadécimale, le complément à deux, les limites des flottants et l'encodage des caractères.
Règles essentielles
- Un entier Python n'a pas de taille fixe, mais un entier stocké sur n bits a un intervalle borné ; en complément à deux sur 8 bits, l'intervalle est -128 à 127.
- Pour coder -5 sur 8 bits : coder 5 en binaire (00000101), inverser les bits (11111010), ajouter 1 (11111011). Le bit de poids fort vaut 1, donc le nombre est négatif.
- Un float utilise une représentation binaire à précision finie : 0.1 et 0.2 ne sont pas exacts, donc 0.1 + 0.2 ne donne pas exactement 0.3.
- Une chaîne str est une suite de caractères Unicode ; sa longueur se compte en caractères, pas en octets selon l'encodage.
- bool possède deux valeurs, True et False ; en Python, bool est une sous-classe de int, mais il ne faut pas en abuser dans les réponses.
- La conversion explicite s'écrit int('12'), float('3.5'), str(42) ; input renvoie toujours une chaîne.
Exemple travaillé
On demande la valeur décimale de 11111011 interprété en complément à deux sur 8 bits. Les poids sont 128, 64, 32, 16, 8, 4, 2, 1. La somme brute vaut 251. Comme le bit 128 est actif, on retire 256 : 251 - 256 = -5. La même suite de bits lue comme entier non signé vaudrait 251 : l'interprétation dépend donc de la convention.
Pièges fréquents
Écrire que 0.1 + 0.2 vaut exactement 0.3 ; additionner une chaîne et un entier sans conversion ; croire qu'un float est toujours exact ; oublier que input renvoie une chaîne ; confondre nombre de bits et nombre de valeurs ; utiliser le complément à deux sans préciser la taille du codage.
À retenir
- int, float, bool, str et None sont des types de base.
- Le complément à deux code les entiers signés.
- Les flottants sont approchés en binaire.
- input renvoie une chaîne.
- L'encodage texte repose sur Unicode, souvent UTF-8.