Le processeur d'un ordinateur personnel d'aujourd'hui est capable de manipuler des nombres binaires sur 64 bits, et les cartes graphiques peuvent manipuler des nombres binaires allant jusqu'à 256 bits. Le plus grand nombre binaire sur 64 bits s'écrit: 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111.
Pour des raisons de commodité de lecture et d'écriture des nombres, les informaticiens ont inventés l'hexadécimal. C'est un système de numération qui utilise 16 symboles: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Bien que très utile dans la programmation en assembleur, qui est le langage le plus proche de la machine, l'hexadécimal a une utilisation plus modérée en programmation, notamment grâce aux compilateurs modernes. On le rencontre encore dans quelques cas en informatique:
Si on utilise un nombre à trois chiffres hexadécimaux pour compter, en omettant certaines parties (lignes contenant des pointillés) qui peuvent être retrouver par la logique du comptage, cela donne:
hexadécimal | décimal | ||
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 0 | 2 | 2 |
0 | 0 | 3 | 3 |
0 | 0 | 4 | 4 |
0 | 0 | 5 | 5 |
0 | 0 | 6 | 6 |
0 | 0 | 7 | 7 |
0 | 0 | 8 | 8 |
0 | 0 | 9 | 9 |
0 | 0 | A | 10 |
0 | 0 | B | 11 |
0 | 0 | C | 12 |
0 | 0 | D | 13 |
0 | 0 | E | 14 |
0 | 0 | F | 15 |
0 | 1 | 0 | 16 |
0 | 1 | 1 | 17 |
0 | 1 | 2 | 18 |
0 | 1 | 3 | 19 |
0 | 1 | 4 | 20 |
0 | 1 | 5 | 21 |
0 | 1 | 6 | 22 |
0 | 1 | 7 | 23 |
0 | 1 | 8 | 24 |
0 | 1 | 9 | 25 |
0 | 1 | A | 26 |
0 | 1 | B | 27 |
0 | 1 | C | 28 |
0 | 1 | D | 29 |
0 | 1 | E | 30 |
0 | 1 | F | 31 |
0 | 2 | 0 | 32 |
0 | 2 | 1 | 33 |
... | ... | ... | ... |
0 | F | F | 255 |
1 | 0 | 0 | 256 |
1 | 0 | 1 | 257 |
... | ... | ... | ... |
1 | F | F | 511 |
2 | 0 | 0 | 512 |
2 | 0 | 1 | 513 |
... | ... | ... | ... |
F | F | D | 4 093 |
F | F | E | 4 094 |
F | F | F | 4 095 |
Première remarque: 1010 = A16, 1110 = B16, 1210 = C16, 1310 = D16, 1410 = E16, 1510 = F16 (le 10 en indice signifie que le nombre est en base 10, le 16 en indice signifie que le nombre est en base 16).
Deuxième remarque:
On peut continuer indéfiniment, les chiffres hexadécimaux qui composent le nombre correspondent, en décimal, à des puissances de 16. On en déduit une formule mathématique pour décoder un nombre en base 16, c'est à dire le convertir en décimal:
dn ... d1 d016 = (d0 × 160 + d1 × 161 + ... + dn × 16n)10
Décodez les nombres en base 16 suivants:
Ajoutez, si besoin, un commentaire:
Ajoutez, si besoin, un commentaire:
Ajoutez, si besoin, un commentaire:
Complétez le tableau ci-dessous en comptant, à partir de 0 et en tenant compte des parties omises (lignes contenant des pointillés), avec un nombre à 5 chiffres et en base 16:
hexadécimal | décimal | ||||
... | ... | ... | ... | ... | ... |
0 | 0 | 0 | 1 | 1 | 17 |
... | ... | ... | ... | ... | ... |
0 | 0 | 0 | 2 | F | |
... | ... | ... | ... | ... | ... |
0 | 0 | 1 | 9 | D | |
... | ... | ... | ... | ... | ... |
C | 9 | F | F | B | |
... | ... | ... | ... | ... | ... |
D | F | F | F | E | |
... | ... | ... | ... | ... | ... |
F | F | F | F | F |
Ajoutez, si besoin, un commentaire:
Pour le codage en hexadécimal on utilise, comme pour le codage en binaire, la méthode de la division Euclidienne, ou celle de la décomposition sur des puissances de 16.
Les deux méthodes pour le codage en hexadécimal étant identiques à celles pour le codage en binaire, elles sont présentées uniquement avec un exemple qui illustre leur utilisation.
183 038 | 16 | |||
14 | 11 439 | 16 | ||
15 | 714 | 16 | ||
10 | 44 | 16 | ||
12 | 2 |
Comme 1210 = C16, 1010 = A16, 1510 = F16, et 1410 = E16. Donc 183 03810 = 2 CA FE16.
En utilisant la calculatrice:
Codage en hexadécimal de 901 67810:
La puissance de 16 qui est inférieur à 901 67810 et qui s'en approche le plus est 164 = 65 536.
164 = 65 536 | 163 = 4 096 | 162 = 256 | 161 = 16 | 160 = 1 | |
Codage en hexadécimal: | 13 | 12 | 2 | 2 | 14 |
Reste: | 49710 | 558 | 46 | 14 |
Comme 1310 = D16, 1210 = C16, et 1410 = E16. Donc 901 67810 = D C2 2E16.
En utilisant la calculatrice:
Codez en hexadécimal 1 95510:
1 955 | 16 | |
16 | ||
Donc 1 95510 = 16.
Ajoutez, si besoin, un commentaire:
Codez en hexadécimal 44 25210:
44 252 | 16 | ||
16 | |||
16 | |||
Donc 44 25210 = 16.
Ajoutez, si besoin, un commentaire:
Codez en hexadécimal 722 27010:
722 270 | 16 | |||
16 | ||||
16 | ||||
16 | ||||
Donc 722 27010 = 16.
Ajoutez, si besoin, un commentaire:
Codez en hexadécimal 48 83010:
163 = 4096 | 162 = 256 | 161 = 16 | 160 = 1 | |
Codage en hexadécimal: | ||||
Reste: |
Donc 48 83010 = 16.
Ajoutez, si besoin, un commentaire:
Codez en hexadécimal 789 98910:
164 = 65 536 | 163 = 4096 | 162 = 256 | 161 = 16 | 160 = 1 | |
Codage en hexadécimal: | |||||
Reste: |
Donc 789 98910 = 16.
Ajoutez, si besoin, un commentaire:
Codez en hexadécimal 195 829 78510:
166 = 16 777 216 | 165 = 1 048 576 |
|
Codage en hexadécimal: | ||
Reste: |
164 = 65 536 | 163 = 4096 | 162 = 256 | 161 = 16 | 160 = 1 | |
Codage en hexadécimal: | |||||
Reste: |
Donc 195 829 78510 = 16.
Ajoutez, si besoin, un commentaire:
Pour programmer un processeur, il faut utiliser des codes binaires qui correspondent à des instructions élémentaires. Il existe principalement deux types de jeux d'instruction dans les processeurs: CISC et RISC.
Les jeux d'instruction CISC (Complex Instruction Set Computeur) correspondent aux processeurs de nos ordinateurs, qui ont un vaste nombre d'instruction permettant d'effectuer un grand nombre de taches. Les jeux d'instruction RISC (Reduced Instruction Set Computer) correspondent aux processeurs de nos téléphones portables, qui, dans le contexte d'un matériel portable, ont un petit nombre d'instruction.
Pour comprendre comment on transcode un nombre, du binaire vers l'hexadécimal ou de l'hexadécimal vers le binaire, nous allons compter en décimal, binaire et hexadécimal de 0 à 15:
décimal | binaire | hexadécimal | |||
0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 1 |
2 | 0 | 0 | 1 | 0 | 2 |
3 | 0 | 0 | 1 | 1 | 3 |
4 | 0 | 1 | 0 | 0 | 4 |
5 | 0 | 1 | 0 | 1 | 5 |
6 | 0 | 1 | 1 | 0 | 6 |
7 | 0 | 1 | 1 | 1 | 7 |
8 | 1 | 0 | 0 | 0 | 8 |
9 | 1 | 0 | 0 | 1 | 9 |
10 | 1 | 0 | 1 | 0 | A |
11 | 1 | 0 | 1 | 1 | B |
12 | 1 | 1 | 0 | 0 | C |
13 | 1 | 1 | 0 | 1 | D |
14 | 1 | 1 | 1 | 0 | E |
15 | 1 | 1 | 1 | 1 | F |
On remarque que le plus grand nombre avec quatre chiffres binaires, 11112, correspond au plus grand nombre à un chiffre hexadécimal, qui est F16.
On appelle un paquet de quatre chiffres binaires un "quartet", ou un "nibble" en anglais.
Pour transcoder un nombre binaire en hexadécimal, il faut le décomposer en quartets, en partant du chiffre binaire le plus à droite et en allant vers la gauche, et associer à chacun d'eux le chiffre hexadécimal qui correspond.
On va transcoder en hexadécimal 10 1011 1101 1001 00112:
Quartets: | 10 | 1011 | 1101 | 1001 | 0011 |
Chiffres en décimal: | 2 | 11 | 13 | 9 | 3 |
Chiffres en hexadécimal: | 2 | B | D | 9 | 3 |
Donc 10 1011 1101 1001 00112 = 2 BD 9316.
Pour transcoder un nombre hexadécimal en binaire, il faut associer à chaque chiffre du nombre le quartet qui correspond.
On va transcoder en binaire 4 C8 1E16:
Chiffres en hexadécimal: | 4 | C | 8 | 1 | E |
Chiffres en décimal: | 4 | 12 | 8 | 1 | 14 |
Quartets: | 100 | 1100 | 1000 | 0001 | 1110 |
Donc 4 C8 1E16 = 100 1100 1000 0001 11102.
Transcodez en hexadécimal 1000 1001 1010 1100 11102:
Quartets: | |||||
Chiffres en décimal: | |||||
Chiffres en hexadécimal: |
Donc 1000 1001 1010 1100 11102 = 16.
Ajoutez, si besoin, un commentaire:
Transcodez en hexadécimal 111 1010 0101 1011 1111 0000 11012:
Quartets: | ||
Chiffres en décimal: | ||
Chiffres en hexadécimal: |
Quartets: | |||||
Chiffres en décimal: | |||||
Chiffres en hexadécimal: |
Donc 111 1010 0101 1011 1111 0000 11012 = 16.
Ajoutez, si besoin, un commentaire:
Transcodez en binaire C 8E A416:
Chiffres en hexadécimal: | |||||
Chiffres en décimal: | |||||
Quartets: |
Donc C 8E A416 = 2.
Ajoutez, si besoin, un commentaire:
Transcodez en binaire 5 CA FE 0B16:
Chiffres en hexadécimal: | ||
Chiffres en décimal: | ||
Quartets: |
Chiffres en hexadécimal: | |||||
Chiffres en décimal: | |||||
Quartets: |
Donc 5 CA FE 0B16 = 2.
Ajoutez, si besoin, un commentaire:
Vous pouvez tester vos connaissances avec les jeux en ligne suivants:
(cc) j. ahmad - Education Nationale - 2020