Aller au contenu

Fiche de révision - Représentation des données : types et valeurs de base


  • Un nombre peut s'écrire en base 2 (binaire), base 10 (décimal) ou base 16 (hexadécimal)
  • Binaire : chiffres 0 et 1. Chaque position est une puissance de 2
  • Hexadécimal : chiffres 0-9 et A-F (A=10, B=11, ..., F=15)

Conversions :

De → VersMéthode
Décimal → BinaireDivisions successives par 2 (restes lus de bas en haut)
Binaire → DécimalAdditionner les puissances de 2 correspondant aux bits à 1
Binaire ↔ HexadécimalGrouper les bits par paquets de 4
Décimal → HexadécimalDivisions successives par 16

Nombre de bits : avec n bits, on représente 2ⁿ valeurs (de 0 à 2ⁿ - 1).

Python : bin(42) → '0b101010', hex(255) → '0xff', int('1010', 2) → 10


Le complément à 2 est la méthode standard pour coder les entiers négatifs.

Coder un négatif sur n bits :

  1. Écrire la valeur absolue en binaire sur n bits
  2. Inverser tous les bits (0↔1)
  3. Ajouter 1

Décoder un nombre en complément à 2 :

  • Bit de poids fort = 0 → positif (lire normalement)
  • Bit de poids fort = 1 → négatif (inverser les bits, ajouter 1, mettre un signe -)

Intervalle sur n bits : de -2ⁿ⁻¹ à +2ⁿ⁻¹ - 1

BitsMinimumMaximum
8-128+127
16-32 768+32 767
32-2 147 483 648+2 147 483 647

  • Un flottant est stocké sous la forme : signe × mantisse × 2^exposant^
  • Analogie : la notation scientifique (3,14 × 10²)

Les pièges :

ProblèmeExemple
Représentation inexacte0.1 + 0.2 → 0.30000000000000004
Accumulation d'erreursAdditionner 0,1 dix fois ≠ 1,0
Comparaison dangereuse0.1 + 0.2 == 0.3 → False

Trois règles d'or :

  1. Ne jamais tester l'égalité entre flottants → utiliser abs(a - b) < epsilon
  2. Utiliser des entiers quand c'est possible (centimes au lieu d'euros)
  3. Les puissances de 2 sont exactes : 0,5, 0,25, 0,125, 0,75...

Un booléen ne prend que deux valeurs : True (1) ou False (0).

Opérateurs et tables de vérité :

abnot aa and ba or ba ^ b (XOR)
001000
011011
100011
110110

Lois de De Morgan :

  • not (a and b) = (not a) or (not b)
  • not (a or b) = (not a) and (not b)

Évaluation paresseuse (court-circuit) :

  • False and X → False sans évaluer X
  • True or X → True sans évaluer X

Addition binaire :

  • Somme = A XOR B
  • Retenue = A AND B

EncodageDateTailleNb de caractèresCouverture
ASCII19637 bits128Anglais (pas d'accents)
ISO-8859-1 (Latin-1)19868 bits256Europe de l'Ouest
Unicode (UTF-8)19911 à 4 octets150 000+Toutes les langues
  • UTF-8 : taille variable, compatible ASCII, standard du Web (98 % des sites)
  • Un caractère ASCII = 1 octet en UTF-8
  • Un caractère accentué = 2 octets en UTF-8
  • Un emoji = 4 octets en UTF-8

Python : ord('A') → 65, chr(233) → 'é'

L'écart entre majuscule et minuscule est toujours 32 : ord('a') - ord('A') = 32.


TermeDéfinition rapide
BitPlus petite unité d'information (0 ou 1)
OctetGroupe de 8 bits
BinaireBase 2 (chiffres 0 et 1)
HexadécimalBase 16 (chiffres 0-9 et A-F)
Complément à 2Méthode de codage des entiers négatifs
OverflowDépassement de capacité (le résultat sort de l'intervalle)
FlottantNombre à virgule codé en signe + mantisse + exposant
BooléenType à deux valeurs : True / False
Table de véritéTableau listant toutes les combinaisons d'une expression
Évaluation paresseusePython s'arrête dès que le résultat est déterminé
XOROu exclusif (vrai si exactement un des deux est vrai)
ASCIIEncodage 7 bits, 128 caractères, anglais uniquement
UTF-8Encodage Unicode à taille variable, standard mondial
Point de codeNuméro Unicode d'un caractère (ex. U+00E9 pour é)