L'essentiel des représentations binaires
Entiers naturels en base 2
Au programme
Un nombre peut être représenté dans différentes bases, en fonction du nombre de valeurs différentes que peut avoir un chiffre. Notre système usel est la base 10, utilisant des chiffres de 0 a 9.
Les ordinateurs manipulent des nombres en base 2, représentés avec uniquement des 0 et des 1.
Le passage de la base 2 à la base 10 se fait en additionnant chaque chiffre du nombre multiplié par la valeur de son paquet :
Pour passer de la base 10 à la base 2, il y a deux méthodes : par soustractions successives et par divisions successives. Il vous faut en connaître au moins une des deux. Voir cours pour les détails de chaque méthode.
Dans un ordinateur, les chiffres de la base 2, donc 0 et 1, sont appelés bits. Les bits sont généralement groupés par 8 (octet), 16, 32 ou 64. Par exemple, 25 sur 8 bits se code \(00011001_2\).
La valeur maximale d'un entier naturel que l'on peut représenter sur \(n\) bits est \(2^n - 1\). Par exemple, sur 8 bits la valeur maximale est 255.
Notation héxadécimale
Au Programme
On peut aussi représenter les nombres en base 16, souvent codée sous forme hexadécimale. On utilise alors les chiffres suivants :
Chiffres hexa | Valeur base 10 |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
a | 10 |
b | 11 |
c | 12 |
d | 13 |
e | 14 |
f | 15 |
La conversion entre base 2 et base hexadécimale est très simple, puisqu'un chiffre hexadécimal corresponds à 4 bits.
donne, en hexadécimal :
La notation hexadécimale est souvent utilisée en informatique pour manipuler des nombres binaires d'une manière plus claire qu'avec directement les bits.
Circuits combinatoires et expressions booléennes
Au Programme
Les booléens sont des nombres qui ne peuvent avoir que deux valeurs possible, \(vrai\) et \(faux\), souvent notés \(1\) et \(0\).
Ils correspondent au type bool en Python.
Les expressions booléennes sont des expressions qui combinent des valeurs booléennes à l'aide d'opérateurs :
- Le
ET
, qui est l'opérateurand
en Python. - Le
OU
, qui est l'opérateuror
en Python. - Le
NON
, qui est l'opérateurnot
en Python.
La table de vérité d'une expression booléenne est un tableau qui sur chaque ligne associe les valeurs possibles de chaque variable dans l'expressions avec la valeur de l'expression. Voici une table de vérité qui récapitule les trois opérateurs précédents.
a |
b |
not a |
a and b |
a or b |
---|---|---|---|---|
0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 1 |
Ces opérations booléennes sont la base de nos ordinateurs, qui les implantent sous forme de portes logiques.
Comme les nombres sont représentés en général sur un nombre finis de bits dans un ordinateur, et donc le résultat de certaines opérations, comme par exemple l'addition, peuvent conduire à des dépassements du nombre de bits disponible.
Entiers relatifs complément à 2
Au Programme
Une manière de représenter des entiers relatifs sur un nombre fini de bits est le complément à 2. Cette représentation a l'avantage de permettre de réutiliser les circuits d'addition des entiers positifs.
Pour les algorithmes de conversion, qui sont à connaître, voir le cours.
Sur \(n\) bits, les algorithmes
TODO (prof) reprendre ici !
Nombres flottants
Au programme
Dans les ordinateurs, les nombres réels sont souvent représentés sous forme de nombre flottants (type float en Python), qui ressemble beaucoup à la notation scientifique.
Un nombre flottant est découpé en trois parties :
- Le signe \(s\), qui vaut -1 ou 1
- La mantisse \(m\), qui est un nombre à virgule en base 2, entre 1 et 2
- L'exposant \(n\), qui est un nombre entier relatif
On peut reconstituer le nombre réel \(r\) avec la formule suivante :
Les représentations flottantes dans les ordinateurs sont inexactes, et peuvent donc donner lieu à des imprécisions de calcul :
affiche
Il est par conséquent déconseillé de tester directement l'égalité entre les flottants :