15 - Numération
Cours associés : 03 - Bases , 04 - Entiers , 05 - Réels .
Exercice 1 : QCM – vérification des prérequis
Pour chaque question, une seule réponse est correcte.
1. Combien de symboles utilise le système hexadécimal ?
- A. 6
- B. 10
- C. 16
- D. 2
Correction publiée après la séance.
2. Quelle est la valeur décimale de $1010_2$ ?
- A. $1010$
- B. $12$
- C. $10$
- D. $20$
Correction publiée après la séance.
3. Combien de valeurs différentes peut-on coder sur un octet (huit bits) ?
- A. 8
- B. 128
- C. 255
- D. 256
Correction publiée après la séance.
4. Quel nombre décimal correspond à $\text{A3}_{16}$ ?
- A. $103$
- B. $163$
- C. $1003$
- D. $\text{A3}$ n’est pas un nombre valide
Correction publiée après la séance.
5. Pour convertir rapidement un nombre binaire en hexadécimal, on regroupe les bits par paquets de :
- A. 2
- B. 3
- C. 4
- D. 8
Correction publiée après la séance.
Exercice 2 : conversion complète
On veut écrire $215_{10}$ en binaire, puis en hexadécimal.
- Recopier et compléter le tableau des divisions successives par 2, jusqu’à obtenir un quotient nul. Les deux premières lignes sont données.
| Division | Quotient | Reste |
|---|---|---|
| $215 \div 2$ | $107$ | $1$ |
| $107 \div 2$ | $53$ | $1$ |
| $53 \div 2$ | ||
Indice
À chaque ligne, diviser par 2 le quotient de la ligne précédente : le nouveau quotient est le résultat de la division entière, et le reste vaut 0 si le nombre est pair, 1 s’il est impair. On s’arrête quand le quotient vaut 0.
Lire les restes de bas en haut pour écrire $215$ en binaire. Vérifier en calculant la somme des puissances de 2 correspondantes.
Indice
Le dernier reste obtenu est le bit de gauche. Pour vérifier, additionner les puissances de 2 (128, 64, 32, 16, 8, 4, 2, 1) placées sous les bits égaux à 1.
Découper l’écriture binaire en groupes de quatre bits, en partant de la droite, et convertir chaque groupe en un chiffre hexadécimal.
Indice
Un groupe de quatre bits vaut entre 0 et 15, avec les poids 8, 4, 2 et 1 ; de 10 à 15, les chiffres hexadécimaux sont A, B, C, D, E et F. Par exemple, 1010 vaut 10, soit A.
Vérifier le résultat hexadécimal en revenant au décimal.
Indice
Le chiffre hexadécimal de gauche compte pour 16 fois sa valeur : le multiplier par 16, puis ajouter le chiffre de droite.
Correction publiée après la séance.
Exercice 3 : conversions guidées
Compléter les tableaux suivants en effectuant les conversions demandées. Les calculs intermédiaires sont guidés.
3.1 Binaire → décimal
Convertir $10110_2$ en décimal en complétant le tableau :
| Position | $2^4$ | $2^3$ | $2^2$ | $2^1$ | $2^0$ |
|---|---|---|---|---|---|
| Puissance | $16$ | $…$ | $…$ | $…$ | $…$ |
| Bit | $1$ | $0$ | $1$ | $1$ | $0$ |
| Produit | $16$ | $…$ | $…$ | $…$ | $…$ |
Somme : $16 + … + … + … + … = …$
Indice
Chaque puissance de 2 est le double de celle placée à sa droite. Le produit vaut la puissance quand le bit vaut 1, et 0 quand il vaut 0.
Correction publiée après la séance.
3.2 Décimal → binaire
Convertir $53_{10}$ en binaire en complétant le tableau de divisions :
| Division | Quotient | Reste |
|---|---|---|
| $53 \div 2$ | $…$ | $…$ |
| $… \div 2$ | $…$ | $…$ |
| $… \div 2$ | $…$ | $…$ |
| $… \div 2$ | $…$ | $…$ |
| $… \div 2$ | $…$ | $…$ |
| $… \div 2$ | $0$ | $…$ |
Lecture des restes de bas en haut : $53_{10} = ……._2$
Indice
Même méthode qu’à l’exercice 2 : diviser chaque quotient par 2 jusqu’à obtenir 0, puis lire les restes de bas en haut.
Correction publiée après la séance.
3.3 Hexadécimal → décimal
Convertir $\text{B4}_{16}$ en complétant :
$\text{B} \times 16^1 + 4 \times 16^0 = … \times 16 + … = …$
Indice
Les chiffres hexadécimaux A à F valent 10 à 15, dans l’ordre.
Correction publiée après la séance.
3.4 Binaire ↔ hexadécimal
Convertir $\text{5F}_{16}$ en binaire en remplaçant chaque chiffre hexadécimal par quatre bits :
$5 = …._2$ et $\text{F} = ….2$, donc $\text{5F}{16} = …….._2$
Indice
Écrire chaque chiffre comme une somme de 8, 4, 2 et 1, puis placer un 1 sous chaque poids utilisé et un 0 sous les autres.
Correction publiée après la séance.
Exercice 4 : conversions autonomes
Effectuer les conversions suivantes sans aide. Pour chaque question, vérifier le résultat en revenant à la base d’origine.
4.1 Binaire → décimal
- $00001111_2$
- $01100100_2$
- $10000001_2$
Correction publiée après la séance.
4.2 Décimal → binaire
- $20_{10}$
- $96_{10}$
- $200_{10}$
Correction publiée après la séance.
4.3 Hexadécimal → décimal
- $\text{46}_{16}$
- $\text{CC}_{16}$
- $\text{FFF}_{16}$
Correction publiée après la séance.
4.4 Décimal → hexadécimal
- $35_{10}$
- $256_{10}$
- $3167_{10}$
Correction publiée après la séance.
4.5 Binaire ↔ hexadécimal
- Convertir $01001011_2$ en hexadécimal.
- Convertir $\text{F0A}_{16}$ en binaire.
- Convertir $11010111_2$ en hexadécimal.
Correction publiée après la séance.
Exercice 5 : opérations en binaire
Effectuer les opérations suivantes directement en binaire, puis vérifier chaque résultat en convertissant en décimal.
5.1 Additions
- $1100_2 + 1000_2$
- $1001_2 + 1011_2$
- $1_2 + 1_2 + 1_2 + 1_2$
Indice
Poser l’addition comme en décimal, de droite à gauche : 0 + 1 = 1, et 1 + 1 = 10, c’est-à-dire 0 avec une retenue de 1 ; 1 + 1 + 1 = 11 : on écrit 1 et on retient 1.
Correction publiée après la séance.
5.2 Soustractions
- $1100_2 - 1000_2$
- $1000_2 - 101_2$
Indice
Poser la soustraction de droite à gauche : 0 − 1 est impossible, on emprunte 1 au rang de gauche, ce qui donne 10 − 1 = 1. Convertir d’abord en décimal permet de connaître le résultat attendu.
Correction publiée après la séance.
Exercice 6 : couleurs HTML et adresses réseau
Les couleurs sur le Web sont définies par un code hexadécimal de la forme #RRVVBB, où RR, VV et BB sont les composantes rouge, verte et bleue, chacune comprise entre 00 et FF.
6.1 Couleurs
La couleur
#FF8000correspond à l’orange. Donner en décimal la valeur de chaque composante (rouge, vert, bleu).Indice
Découper le code en trois paires de chiffres hexadécimaux, RR, VV et BB, puis convertir chacune en décimal : le chiffre de gauche compte pour 16 fois sa valeur.
On souhaite un violet ayant $128$ de rouge, $0$ de vert et $200$ de bleu. Écrire le code hexadécimal correspondant.
Indice
Convertir chaque composante en hexadécimal sur deux chiffres : diviser par 16 donne le chiffre de gauche (le quotient) et le chiffre de droite (le reste). Par exemple, 75 = 4 × 16 + 11 s’écrit 4B.
Quel est le code hexadécimal du blanc ? Du noir ? Justifier.
Indice
Le blanc est la couleur dont les trois composantes sont au maximum, le noir celle dont les trois composantes sont nulles.
Correction publiée après la séance.
6.2 Adresse MAC
Une adresse MAC est constituée de six octets écrits en hexadécimal, séparés par des deux-points, par exemple : 5A:3C:01:FF:B2:10.
Combien de bits comporte une adresse MAC ?
Indice
Un octet compte huit bits.
Convertir le premier octet
5Aen binaire puis en décimal.Indice
Chaque chiffre hexadécimal donne quatre bits, comme à l’exercice 3.4. Pour le décimal, le 5 compte pour 5 × 16.
Combien d’adresses MAC différentes existent en théorie ?
Indice
Avec $n$ bits, on code $2^n$ valeurs différentes.
Correction publiée après la séance.
Exercice 7 : synthèse – message codé
On souhaite transmettre le mot NSI en binaire, en utilisant le code ASCII (voir le cours sur les textes).
Les codes ASCII des lettres sont : N = $78_{10}$, S = $83_{10}$, I = $73_{10}$.
Convertir chacun de ces codes en binaire sur huit bits.
Indice
Même méthode qu’à l’exercice 2, puis compléter à gauche par des 0 jusqu’à huit bits.
Écrire la suite complète de bits correspondant au mot « NSI ».
Indice
Mettre bout à bout les trois octets, dans l’ordre des lettres.
Convertir cette même suite de bits en hexadécimal.
Indice
Chaque octet donne deux chiffres hexadécimaux, un pour chaque groupe de quatre bits.
Un camarade vous envoie le message hexadécimal
42 4F 4E. Décoder ce message (convertir en décimal puis en caractères ASCII, sachant que A = 65, B = 66, etc.).Indice
Par exemple,
41vaut $4 \times 16 + 1 = 65$, c’est A. Convertir de même chacun des trois codes, puis retrouver sa lettre en comptant à partir de A = 65.
# Vous pouvez vérifier vos résultats avec Python :
# chr(78) donne 'N', ord('N') donne 78
# bin(78) donne '0b1001110', hex(78) donne '0x4e'
Correction publiée après la séance.
Exercice 8 : complément à deux
On représente les entiers relatifs sur 8 bits en complément à deux (cours 04 - Entiers).
Écrire la représentation de 37, de −37, de −1 et de −128.
Indice
Un entier positif s’écrit simplement en binaire sur 8 bits. Pour un entier négatif, écrire sa valeur absolue sur 8 bits, inverser tous les bits, puis ajouter 1 ; autre méthode : coder −n comme 256 − n.
Quel entier représente
11110000? Et01111111?Indice
Si le bit de gauche vaut 0, l’entier est positif et se lit directement. S’il vaut 1, l’entier est négatif : il vaut la valeur binaire lue moins 256.
Effectuer l’addition binaire
00000101 + 11111101et interpréter le résultat.Indice
Poser l’addition sur 8 bits : la retenue qui sortirait à gauche, au-delà du huitième bit, est perdue. Quels entiers représentent
11111101et le résultat ?Quels sont le plus grand et le plus petit entiers représentables ? Que donne le calcul de 127 + 1 ?
Indice
Le bit de gauche donne le signe : quel est le plus grand octet qui commence par 0, et le plus petit entier négatif ? Écrire ensuite 127 + 1 en binaire et lire le résultat en complément à deux.
Correction publiée après la séance.
Exercice 9 : nombres flottants
On utilise la représentation IEEE 754 sur 32 bits (cours 05 - Réels) : un bit de signe, huit bits d’exposant décalé de 127, vingt-trois bits de mantisse.
Écrire 6,625 en binaire, puis sous la forme normalisée $1{,}m \times 2^e$.
Indice
La partie entière se convertit comme d’habitude. Pour la partie décimale, multiplier par 2 et garder à chaque étape la partie entière obtenue : 0,375 × 2 = 0,75 donne 0, puis 0,75 × 2 = 1,5 donne 1, puis 0,5 × 2 = 1 donne 1, donc 0,375 s’écrit 0,011 en binaire. Décaler enfin la virgule pour ne garder qu’un 1 devant elle.
En déduire sa représentation sur 32 bits.
Indice
Le bit de signe vaut 0 pour un nombre positif. L’exposant stocké est $e + 127$, écrit sur huit bits. La mantisse est formée des chiffres placés après la virgule dans la forme normalisée, complétés à droite par des 0 jusqu’à 23 bits.
Quel nombre représente
0 10000000 01000000000000000000000?Indice
Lire le signe, puis l’exposant en décimal, auquel on retire 127, puis la mantisse : le nombre vaut $1{,}m \times 2^e$, avec $1{,}m$ écrit en binaire.
En Python, que vaut
0.1 + 0.2 == 0.3? Expliquer, et proposer une façon correcte de comparer deux flottants.Indice
Afficher
0.1 + 0.2pour voir la valeur réellement calculée : 0,1 n’a pas d’écriture binaire finie et il est stocké arrondi. Pour comparer deux flottants, on ne teste pas l’égalité : on regarde si leur écart, en valeur absolue, est très petit.
Correction publiée après la séance.