C1-REDO-02 binaire
Contents
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 : little et big endian, poids des bits#
Lorsqu’on écrit un nombre en binaire, il s’agit de savoir comment le lire.
Si on lit de droite à gauche (notation dite little endian), alors le bit de poids le plus faible (celui qui représente la puissance la plus faible donc \(2^0\) se trouve à droite
Si on lit de gauche à droite (notation dite big endian), alors le bit de poids le plus faible (celui qui représente la puissance la plus faible donc \(2^0\) se trouve à gauche
NOUS UTILISERONS TOUJOURS LA NOTATION LITTLE ENDIAN DANS CE COURS
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 souci de simplification, on adopte la nommenclature \(_{10}\) pour un entier en base 10 et \(_{2}\) pour un entier en binaire.
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 en base 10
\(\frac{58}{2} = 29\), reste \(0\)
\(\frac{29}{2} = 14\), reste \(1\)
\(\frac{14}{2} = 7\), reste \(0\)
\(\frac{7}{2} = 3\), reste \(1\)
\(\frac{3}{2} = 1\), reste \(1\)
\(\frac{1}{2} = 0\), reste \(1\)
le nombre 58 s’écrit donc en binaire en lisant de bas en haut les restes : 111010
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 s’écrit donc en binaire en lisant de haut en bas : 111010
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 donne :
\(0 \times 2^0 = 0\)
\(1 \times 2^1 = 2\)
\(0 \times 2^2 = 0\)
\(0 \times 2^3 = 0\)
\(1 \times 2^4 = 16\)
\(0 \times 2^5 = 0\)
\(1 \times 2^6 = 64\)
\(1 \times 2^7 = 128\)
donc \(11010010_{2}\) vaut \(2+16+64+128\) 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