
C1-REDO-02 binaire#
Objectifs#
La représentation binaire est la base dans un ordinateur. Ce cours traverse les objets suivants :
construire des nombres entiers en base 2, 10 et 16
convertir des nombres entre les différentes bases
comprendre la notation en bytes
introduire les ordres de grandeurs KB, MB, GB, etc..
Tour de magie introductif#
Dans le tour de magie appelé “L’ordinateur magique”, le binaire est approché.
Règles du tour#
Le magicien demande à une personne de choisir un nombre entre 1 et 63
Le magicien présente les cartes et demande de répondre à la question pour chacune des 6 cartes : “Le nombre se trouve-t-il sur la carte ?”
Le magicien trouve le nombre
Les cartes#

Explications du tour#
Observez le premier chiffre qui se trouve en haut à gauche de chaque carte.
carte 6 |
carte 5 |
carte 4 |
carte 3 |
carte 2 |
carte 1 |
|---|---|---|---|---|---|
32 |
16 |
8 |
4 |
2 |
1 |
25 |
24 |
23 |
22 |
21 |
20 |
Tous les nombres d’une carte x ont un 1 à la position x depuis la droite (l’exposant de la puissance de 2)
Définition : nombre entier binaire#
Un nombre entier binaire est un nombre qui s’écrit uniquement avec les deux symboles 0 et 1.
Définition : nombre entier décimal#
Un nombre décimal est un nombre qui s’écrit uniquement avec les dix symboles 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9
Définition : un bit#
un bit est l’unité la plus simple dans le système binaire. Il peut prendre la valeur 0 ou 1
L’abbréviation du bit est le b minuscule
Définition : un octet (en anglais un byte)#
un octet (en anglais un byte) est formé de huit bits.
Attention : il est d’usage d’utiliser l’abbréviation B (majuscule) pour noter un byte pour éviter la confusion avec le b (minuscule) du bit
Exemple : 00111010 est un byte (qui représente la valeur 58 en décimal)
Définition : poids des bits#
Une suite de bits (par exemple 1010) peut se lire de gauche à droite ou de droite à gauche. C’est une convention (un choix). Il s’agit simplement de savoir où placer le bit qui représente la puissance de \(2\) la plus faible, soit \(2^0\).
Ainsi dans l’exemple, 1010, si l’on lit
de gauche à droite, le bit de poids le plus fort est
0et : \(101\underline{0}_2 = 5_{10}\)de droite à gauche, le bit de poids le plus fort est
1et : \(\underline{1}010_2 = 10_{10}\)
DANS CE COURS, NOUS LISONS DE DROITE A GAUCHE
Définition : little et big endian#
Le terme pour savoir si on lit une suite de bit de droite à gauche ou de gauche à droite est l’endianess :
Si on lit de droite à gauche (notation dite little endian), alors le bit de poids le plus faible se trouve à droite
Si on lit de gauche à droite (notation dite big endian), alors le bit de poids le plus faiblese trouve à gauche
NOUS UTILISERONS TOUJOURS LA NOTATION LITTLE ENDIAN DANS CE COURS
Signification d’un nombre binaire#
Un nombre écrit en binaire est un nombre uniquement écrit avec une suite de \(1\) et de \(0\). Chaque position en notation little endian (donc en lisant de droite à gauche représente une puissance de \(2\) :
position 7 |
position 6 |
position 5 |
position 4 |
position 3 |
position 2 |
position 1 |
position 0 |
|---|---|---|---|---|---|---|---|
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
Ainsi, si l’on prend le nombre binaire \(10110101\) que l’on place chaque 1 et 0 à sa position puis que l’on additionne la valeur de la puissance de deux correspondant à sa position (\(1\) : on prend, \(0\) on ne prend pas :
position 7 |
position 6 |
position 5 |
position 4 |
position 3 |
position 2 |
position 1 |
position 0 |
|---|---|---|---|---|---|---|---|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
128 |
0 |
32 |
16 |
0 |
4 |
0 |
1 |
\(10110101\) en binaire donne donc \(128 + 32 + 16 + 4 + 1 = 181\)
Convention d’écriture#
Il y a un problème lorsqu’on compare ou que l’on converti des nombres entre la base \(2\) (binaire) et la base \(10\) (décimale). Il nous faut donc une manière de les distinguer.
Dans ce cours, nous utiliserons toujours la notation \(_{base}\) (indice) pour décrire la base du nombre.
Le nombre cent en base \(10\) s’écrit \(100_{10}\)
Le nombre quatre en base \(2\) s’écrit \(100_2\)
Conversion d’un nombre décimal en binaire#
Il existe deux algorithmes (techniques) pour convertir un nombre entier de la base 10 à la base 2.
Par division#
Diviser le nombre entier en base 10 par 2 successivement
En conservant les restes, on obtient le résultat en lisant de gauche à droite
Exemple
\(58_{10}\)
\(\frac{58_{10}}{2_{10}} = 29_{10}\), reste \(0_{10}\)
\(\frac{29_{10}}{2_{10}} = 14_{10}\), reste \(1_{10}\)
\(\frac{14_{10}}{2_{10}} = 7_{10}\), reste \(0_{10}\)
\(\frac{7_{10}}{2_{10}} = 3_{10}\), reste \(1_{10}\)
\(\frac{3_{10}}{2_{10}} = 1_{10}\), reste \(1_{10}\)
\(\frac{1_{10}}{2_{10}} = 0_{10}\), reste \(1_{10}\)
le nombre \(58_{10}\) s’écrit donc en binaire en lisant de bas en haut les restes : \(111010_{2}\)
Par soustraction#
Retrancher successivement le nombre de la plus grande puissance de 2 possible
Exemple
\(58_{10} - 1 \times 2^5 = 58_{10} - 32_{10} = 26_{10}\) donc 1
\(26_{10} - 1 \times 2^4 = 10_{10}\) donc 1
\(10_{10} - 1 \times 2^3 = 2_{10}\) donc 1
\(2_{10} - 0 \times 2^2 = 2_{10}\) donc 0
\(2_{10} - 1 \times 2^1 = 0_{10}\) donc 1
\(0_{10} - 0 \times 2^0 = 0_{10}\) donc 0
Le nombre \(58_{10}\) s’écrit donc en binaire en lisant de haut en bas : \(111010_{2}\)
Fiche d’exercices + corrigé#
Exercice 1#
Essayez de convertir en binaire les nombres suivants avec une écriture sur 6 bits :
0
23
45
63
Exercice 2#
Combien de bits faudrait-il pour coder le nombre 64 ? Et le nombre 128 ?
Exercice 3 (pour aller plus loin)#
Vous souhaitez créer un tour pour votre petite soeur ou votre petit frère avec uniquement 4 cartes. Combien de nombre différents peut-on représenter avec 4 bits ?
Conseil : les nombres vont de 0000 à 1111
Conversion d’un nombre binaire en décimal (base 2 à base 10)#
L’opération inverse se fait par addition.
Additionner les différentes puissances de deux pour obtenir le nombre en base 10
Exemple :
\(11010010_{2}\) donne :
\(0 \times 2^0 = 0_{10}\)
\(1 \times 2^1 = 2_{10}\)
\(0 \times 2^2 = 0_{10}\)
\(0 \times 2^3 = 0_{10}\)
\(1 \times 2^4 = 16_{10}\)
\(0 \times 2^5 = 0_{10}\)
\(1 \times 2^6 = 64_{10}\)
\(1 \times 2^7 = 128_{10}\)
donc \(11010010_{2}\) vaut \(2_{10}+16_{10}+64_{10}+128_{10}\) donc \(210_{10}\)
Remarque : c’est l’explication algorithmique du tour de magie
Exercice 4#
Convertir les nombres suivants en décimal :
1001
110110110
100000001
101010101010101010
Définition : nombre entier hexadécimal#
Un nombre entier hexadécimal est un nombre entier qui s’écrit uniquement avec les seize symboles 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E et F
Conversion d’un nombre entier binaire en hexadécimal (base 2 à base 16)#
Il suffit de regrouper les bits par paquets de 4, quitte à rajouter des 0 sur les bits de poids fort (à gauche)
Exemple :
\(101001000011_{2}\) en base 2
\(1010_{2} , 0100_{2}, 0011_{2}\) toujours en base 2
\(1010_{2} = A_{16}\), \(0100_{2} = 4_{16}\), \(0011_{2} = 3_{16}\)
En base 16 : A43
Exercice 5#
Convertissez le nombres binaires suivants en base 16:
010010
1000
1111
01001010101011
11100101010011010 (combien de bytes pour ce nombre binaire ?)
suffixes pour les grandes valeurs#
Dans le Système international d’unités, il est d’usage d’utiliser des préfixes que l’on ajoute avant l’unité.
Ainsi :
Nom |
Symbole (fr/en) |
Valeur |
|---|---|---|
Kilooctet |
ko (kB) |
\(10^{3}\) octets = 8 kb |
mégaoctet |
Mo (MB) |
\(10^{6}\) octets = 8 Mb |
gigaoctet |
Go (GB) |
\(10^{9}\) octets = 8 Gb |
téraoctet |
To (TB) |
\(10^{12}\) octets = 8 Tb |
pétaoctet |
Po (PB) |
\(10^{15}\) octets = 8 Pb |
exaoctet |
Eo (EB) |
\(10^{18}\) octets = 8 Eb |
zettaoctet |
Zo (ZB) |
\(10^{21}\) octets = 8 Zb |
yottaoctet |
Yo (YB) |
\(10^{24}\) octets = 8 Yb |
Attention : lorsqu’on parle de capacité, on préférera le terme français “octet” plutôt que byte qui est phonétiquement trop proche de bit