Préliminaire : Les puissances de 2
Écrire les 11 premières puissances de 2.
Il serait judicieux de savoir reconnaître les 11 premières puissance de 2.
1024 = ?
exercice Python :
- Écrire un programme qui affiche les puissances de 2 de 20 à 220.
- Écrire un programme qui, connaissant une puissance de 2, renvoie l’exposant (pour m = 2n, l’entrée c’est m, la sortie c’est n).
correction partielle en Python :
>>> for i in range(0,21):
... print 2**i
...
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
Système binaire
Dans notre système pour compter, dit décimal, on a :
1243 = 1000 + 200 + 40 + 3
soit :
1243 = 103 + 2*102 + 4*101 + 3*100.
Nous sommes en base 10. On utilise alors les 10 symboles 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 pour noter les nombres.
Dans le système binaire, en base 2, nous aurons 2 symboles 0 et 1 pour noter les nombres.

Ainsi, tout nombre en binaire pourra s’écrire :
a = a0*20 + ... + an*2n,
où les ai appartiennent à l’ensemble {0,1}.
Par exemple :
1001 = 1*23 + 0*22 + 0*21 + 1*20
d’où b1001 = 9.
vérification Python :
>>> bin(9)
>>> '0b1001'
décimal | binaire |
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
exercice Python :
- écrire un programme qui affiche en binaire les entiers naturels de 1 à 20.
Décimal vers binaire
On effectue les divisions entières successives par 2 du nombre à transformer :
127 = 63*2 + 1
63 = 31*2 + 1
31 = 15*2 + 1
15 = 7*2 + 1
7 = 3*2 + 1
3 = 1*2 + 1
1 = 0*2 + 1
127 = (((((1*2 + 1)*2 + 1)*2 + 1)*2 + 1)*2 + 1)*2 + 1
127 = 1*26 + 1*25 + 1*24 + 1*23 + 1*22 + 1*21 + 1*20
Ainsi 127 s’écrit 1111111 en binaire.
vérification Python :
>>> bin(127)
>>> '0b1111111'
exercice Python :
- écrire un programme qui convertit en binaire un entier naturel.
Un mot sur l’hexadécimal
Le système hexadécimal correspond à la base 16. On le rencontre entre autres dans le codage des couleurs.
On utilise les 16 symboles suivant pour représenter les nombres :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
A vaut 10, B vaut 11, etc.
Ainsi FF = 15*161 + 15*160 = 255.
Pour coder 127 en hexadécimal, il faut effectuer les divisions successives par 16 et procéder comme pour le binaire.
On peut s’aider de Python pour le calcul :
>>> 127/16
>>> 7
>>> 127%16
>>> 15
Donc 127 = 7*16 + 15
127 = 7*161 + 15*160
127 s’écrit donc 7F (parce que 15 c’est le symbole F).
Pour convertir de base 2 en base 16, il suffit de faire deux paquets de 4 bits.
Ainsi, 100011112 = 8F16 puisque 10002 = 816 et 11112 = F16.
décimal | binaire | hexadécimal |
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
exercice Python :
- écrire un programme qui convertit en hexadécimal un entier naturel, et vice-versa.
- écrire un programme qui convertit en hexadécimal un nombre en binaire, et vice-versa.
Codage d’un nombre
Le bit est la quantité élémentaire d’information : BInary digiT : 0 ou 1 (en savoir plus).
Un octet (byte) est un paquet de 8 bits.
Le plus grand nombre entier naturel que l’on peut coder sur 8 bits est donc :
11111111
code Python :
>>> bin(255)
>>> '0b11111111'
Quel est le plus grand entier que l’on peut coder sur 16 bits ?
En remarquant que :
>>> bin(65535)
'0b1111111111111111'
>>>
il faudra donc 16 bits pour coder le nombre 65535.
Codage d’un texte
On utilise le code ASCII qui donne en hexadécimal le code ASCII des caractères du clavier.
Table fournie : ASCII_Code_Chart.svg
Exemple : A = 41 en hexadécimal = 65 en décimal.
Pour coder le caractère A, on va donc coder en binaire le nombre 65 : 1000001.
Il suffit de 7 bits pour coder les caractères de l’alphabet.
Voir un premier extrait de film qui présente un message codé :
Extrait du film Le code Andromède
Décoder en français la suite binaire suivante pour connaître le message envoyé du futur dans le film Le code Andromède (The Andromeda Strain, 2008 American science-fiction film),
basé sur une nouvelle de Michael Crichton (1969) (http://en.wikipedia.org/wiki/The_An...).
0110111 0110011 0111001 0110101 0110010 0111000
1000010 1000001 1000011 1001001 1001100 1001100
1010101 1010011 1001001 1001110 1000110 1000101
1010010 1001110 1010101 1010011
Voir le message décodé :
Extrait du film Le code Andromède
Pour finir, voici un jeu Binary-game sur lequel les élèves pourront manipuler des octets façon Tetris. [1]
Un autre jeu en flash sur le binaire se trouve sur cette page.
Commentaires