NSIpremiere spe

NSI · premiere speGratuit

Chapitre 1Représentation des données : types et valeurs de base

L'essentiel en 30 secondes

Un ordinateur ne manipule que des 0 et des 1 (bits). Tout nombre entier se convertit en binaire (base 2) ou en hexadécimal (base 16). Les entiers relatifs utilisent le complément à deux. Les flottants sont des approximations : ne jamais tester l'égalité stricte entre deux flottants. Les booléens (True/False) sont à la base de toute logique informatique.

Notions clés

Bit / Octet
Un bit vaut 0 ou 1. Un octet = 8 bits, peut représenter 256 valeurs (0 à 255).
Binaire (base 2)
Système de numération utilisant uniquement 0 et 1. Chaque rang représente une puissance de 2.
Hexadécimal (base 16)
Système utilisant 0-9 et A-F. Un chiffre hexa = 4 bits. Préfixe 0x en Python.
Complément à deux
Méthode pour coder les entiers relatifs en binaire. Sur n bits : de -2^(n-1) à 2^(n-1)-1.
Flottant (float)
Représentation approchée d'un nombre réel selon la norme IEEE 754 : signe, exposant, mantisse.
Booléen
Type à deux valeurs : True ou False. Opérateurs : and, or, not.

Formules

Conversion décimal → binaire

bin(42)0b101010`bin(42)` \to `'0b101010'`

Condition : bin() renvoie une chaîne préfixée par 0b

Conversion décimal → hexadécimal

hex(255)0xff`hex(255)` \to `'0xff'`

Condition : hex() renvoie une chaîne préfixée par 0x

Conversion binaire/hexa → décimal

int(101010,2)42;int(ff,16)255`int('101010', 2)` \to `42` ; `int('ff', 16)` \to `255`

Condition : int(chaine, base) pour convertir vers décimal

Nombre de valeurs sur n bits

2n2^n

Condition : Sur n bits, on code 2^n valeurs distinctes (de 0 à 2^n - 1 en non signé)

Plage en complément à deux sur n bits

[2n1,  2n11][-2^{n-1},\; 2^{n-1}-1]

Condition : Ex : sur 8 bits, de -128 à 127

A retenir

  • Sur n bits non signés : valeurs de 0 à 2^n - 1. Sur n bits signés (complément à deux) : de -2^(n-1) à 2^(n-1) - 1.
  • Les flottants sont des APPROXIMATIONS : 0.1 + 0.2 != 0.3 en Python. Ne jamais comparer deux flottants avec ==.
  • 1 chiffre hexadécimal = 4 bits exactement. Donc 2 chiffres hexa = 1 octet.

Erreurs classiques

Erreur : Comparer des flottants avec ==(ex== (ex : 0.1+0.2==0.30.1 + 0.2 == 0.3 \to False)

Correction : Utiliser abs(a - b) < epsilon avec epsilon très petit (ex : 1e-9)

Erreur : Oublier que le bit de poids fort en complément à deux indique le signe

Correction : Si le bit de poids fort vaut 1, le nombre est négatif en complément à deux

Erreur : Confondre octet et bit : dire qu'un octet = 1 bit

Correction : 1 octet = 8 bits. 1 ko = 1000 octets (SI) ou 1024 octets (binaire)

Astuce méthode

Pour convertir vite du décimal au binaire : divise par 2 successivement et lis les restes de bas en haut. Pour vérifier, utilise bin() et int() en Python.