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.

  1. Recopier et compléter le tableau des divisions successives par 2, jusqu’à obtenir un quotient nul. Les deux premières lignes sont données.
DivisionQuotientReste
$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.

  1. 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.

  2. 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.

  3. 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 :

DivisionQuotientReste
$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

  1. $00001111_2$
  2. $01100100_2$
  3. $10000001_2$

Correction publiée après la séance.

4.2 Décimal → binaire

  1. $20_{10}$
  2. $96_{10}$
  3. $200_{10}$

Correction publiée après la séance.

4.3 Hexadécimal → décimal

  1. $\text{46}_{16}$
  2. $\text{CC}_{16}$
  3. $\text{FFF}_{16}$

Correction publiée après la séance.

4.4 Décimal → hexadécimal

  1. $35_{10}$
  2. $256_{10}$
  3. $3167_{10}$

Correction publiée après la séance.

4.5 Binaire ↔ hexadécimal

  1. Convertir $01001011_2$ en hexadécimal.
  2. Convertir $\text{F0A}_{16}$ en binaire.
  3. 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

  1. $1100_2 + 1000_2$
  2. $1001_2 + 1011_2$
  3. $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

  1. $1100_2 - 1000_2$
  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

  1. La couleur #FF8000 correspond à 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.

  2. 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.

  3. 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.

  1. Combien de bits comporte une adresse MAC ?

    Indice

    Un octet compte huit bits.

  2. Convertir le premier octet 5A en 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.

  3. 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}$.

  1. 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.

  2. Écrire la suite complète de bits correspondant au mot « NSI ».

    Indice

    Mettre bout à bout les trois octets, dans l’ordre des lettres.

  3. 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.

  4. 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, 41 vaut $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).

  1. É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.

  2. Quel entier représente 11110000 ? Et 01111111 ?

    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.

  3. Effectuer l’addition binaire 00000101 + 11111101 et 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 11111101 et le résultat ?

  4. 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.

  1. É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.

  2. 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.

  3. 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.

  4. 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.2 pour 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.