Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 214 minDébutant

Conversions entre décimal, binaire et hexadécimal

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • convertir un entier du décimal vers le binaire ou l'hexadécimal, et inversement ;
  • passer du binaire à l'hexadécimal par paquets de 4 bits ;
  • écrire une adresse IPv4 ou un masque en binaire ;
  • lire une adresse MAC ou une couleur écrite en hexadécimal.

5 exercices corrigés2 schémas

Convertir un nombre d'une base à une autre, c'est changer son écriture sans changer sa valeur : (156)₁₀ = (10011100)₂ = (9C)₁₆. Ce chapitre donne une méthode sûre pour chacun des six sens de conversion entre les bases 10, 2 et 16, avec des exemples détaillés, la façon de vérifier ton résultat, et les usages en réseau et en développement : adresses IP, adresses MAC, couleurs.

Vue d'ensemble des méthodes

De → versMéthodeExemple
Base 2 ou 16 → base 10Somme des chiffres × poids(9C)₁₆ = 9 × 16 + 12 = 156
Base 10 → base 2Divisions successives par 2, ou soustraction des puissances de 2156 → (10011100)₂
Base 10 → base 16Divisions successives par 16156 → (9C)₁₆
Base 2 → base 16Paquets de 4 bits en partant de la droite1001 1100 → 9C
Base 16 → base 2Chaque chiffre donne 4 bits9C → 1001 1100

Du binaire ou de l'hexadécimal vers le décimal

C'est la définition même de la numération de position (chapitre 1) : tu multiplies chaque chiffre par son poids et tu additionnes.

Exemple 1. (1101001)₂ : les bits à 1 sont aux positions 6, 5, 3 et 0.

(1101001)₂ = 64 + 32 + 8 + 1 = 105.

Exemple 2. (7EA)₁₆ : E vaut 14, A vaut 10.

(7EA)₁₆ = 7 × 256 + 14 × 16 + 10 × 1 = 1 792 + 224 + 10 = 2 026.

La méthode de Horner, plus rapide pour les longs nombres : tu lis les chiffres de gauche à droite, et à chaque chiffre tu multiplies le résultat courant par la base avant d'ajouter le chiffre.

text
(7EA)₁₆ :   7
            7 × 16 + 14 = 126
          126 × 16 + 10 = 2026

Elle évite de calculer les puissances, et c'est exactement ce que fait un programme qui lit un nombre chiffre par chiffre (chapitre 11).

Du décimal vers le binaire : les divisions successives

Pour écrire un entier N en base 2 :

  1. divise N par 2 : note le quotient et le reste (0 ou 1) ;
  2. recommence avec le quotient, jusqu'à obtenir un quotient égal à 0 ;
  3. lis les restes de bas en haut : le dernier reste obtenu est le bit de poids fort.

Exemple : 156 en binaire.

divisionquotientreste156 ÷ 2→78078 ÷ 2→39039 ÷ 2→19119 ÷ 2→919 ÷ 2→414 ÷ 2→202 ÷ 2→101 ÷ 2→01lire de basen haut156 = (10011100)₂on s’arrête quand le quotient vaut 0
On s'arrête au quotient 0 et on lit les restes de bas en haut : 156 = (10011100)₂

En lisant les restes de bas en haut : 156 = (10011100)₂.

Vérification : 128 + 16 + 8 + 4 = 156. Prends l'habitude de vérifier chaque conversion dans l'autre sens : cela prend vingt secondes et rattrape la plupart des erreurs.

Pourquoi ça marche ? Chaque division par 2 est une division euclidienne : 156 = 2 × 78 + 0. Le reste dit si le nombre est pair ou impair, c'est-à-dire son bit de poids faible. Diviser par 2 décale ensuite tous les bits d'un rang vers la droite, et le reste suivant donne le bit suivant.

Du décimal vers le binaire : la soustraction des puissances de 2

Pour un nombre pas trop grand, cette méthode va plus vite et se fait de tête :

  1. cherche la plus grande puissance de 2 inférieure ou égale au nombre, et écris 1 à sa position ;
  2. retire-la, puis recommence avec le reste ;
  3. mets 0 aux positions des puissances que tu n'as pas utilisées.

Exemple : 156.

  • La plus grande puissance de 2 qui tient dans 156 est 128 : 156 − 128 = 28.
  • 64 et 32 ne tiennent pas dans 28 : 0 et 0.
  • 16 tient : 28 − 16 = 12.
  • 8 tient : 12 − 8 = 4.
  • 4 tient : 4 − 4 = 0.
  • 2 et 1 : 0 et 0.
1286432168421
10011100

156 = (10011100)₂, comme avec les divisions.

C'est la méthode qu'utilisent les administrateurs réseau pour convertir un octet d'adresse IP : avec le tableau 128, 64, 32, 16, 8, 4, 2, 1 écrit en haut de la feuille, un octet se convertit en quelques secondes.

Du décimal vers l'hexadécimal

La méthode des divisions successives marche dans toutes les bases : il suffit de diviser par 16 au lieu de 2. Les restes vont alors de 0 à 15, et tu écris les restes de 10 à 15 avec les lettres A à F.

Exemple : 2 026 en hexadécimal.

DivisionQuotientResteChiffre
2 026 ÷ 1612610A
126 ÷ 16714E
7 ÷ 16077

En lisant de bas en haut : 2 026 = (7EA)₁₆.

Pour faire la division euclidienne par 16 à la calculatrice : 2 026 ÷ 16 = 126,625. Le quotient est la partie entière, 126, et le reste vaut 2 026 − 16 × 126 = 2 026 − 2 016 = 10. Ne prends jamais la partie décimale (625) pour le reste. Sur certaines calculatrices, une touche ou une fonction donne directement quotient et reste ; en Python, divmod(2026, 16) renvoie (126, 10).

Autre méthode : passer par le binaire. 2 026 = 1 024 + 512 + 256 + 128 + 64 + 32 + 8 + 2, soit (11111101010)₂. Regroupé par 4 bits depuis la droite : 0111 1110 1010, soit 7, E, A. On retrouve (7EA)₁₆.

Binaire et hexadécimal par paquets de 4 bits

Comme 16 = 2⁴, chaque chiffre hexadécimal correspond à un paquet de 4 bits, et inversement. La conversion se fait sans aucun calcul sur le nombre entier.

Du binaire vers l'hexadécimal :

  1. découpe le nombre en paquets de 4 bits en partant de la droite ;
  2. complète le paquet de gauche avec des 0 si besoin ;
  3. remplace chaque paquet par son chiffre hexadécimal (tableau du chapitre 1).
1011101011on découpe depuis la droite001022111014E101111Bcomplétépar 00(1011101011)₂ = (2EB)₁₆
On découpe depuis la droite et on complète à gauche : (1011101011)₂ = (2EB)₁₆

(1011101011)₂ → 0010 1110 1011 → 2, E, B → (2EB)₁₆.

Vérification par le décimal : (2EB)₁₆ = 2 × 256 + 14 × 16 + 11 = 512 + 224 + 11 = 747, et (1011101011)₂ = 512 + 128 + 64 + 32 + 8 + 2 + 1 = 747. Les deux écritures représentent bien le même nombre.

De l'hexadécimal vers le binaire : remplace chaque chiffre par ses 4 bits, sans oublier les 0 de tête à l'intérieur du nombre.

(3B7)₁₆ → 3 = 0011, B = 1011, 7 = 0111 → (0011 1011 0111)₂, soit (1110110111)₂ sans les zéros de tête.

Écrire un nombre sur un nombre fixe de bits

En informatique, un nombre est presque toujours stocké sur un nombre fixe de bits : 8, 16, 32 ou 64. On complète alors à gauche avec des 0, qui ne changent pas la valeur.

  • 10 sur 8 bits : 0000 1010.
  • 1 sur 8 bits : 0000 0001.
  • 156 sur 16 bits : 0000 0000 1001 1100, soit (009C)₁₆.

Un octet s'écrit toujours avec 8 bits et deux chiffres hexadécimaux : on écrit (0A)₁₆ et non (A)₁₆ dans une adresse MAC ou une couleur.

Application : une adresse IPv4 en binaire

Une adresse IPv4 est un nombre de 32 bits, écrit en notation décimale pointée : quatre octets en décimal, séparés par des points. Chaque octet se convertit séparément, sur 8 bits.

Octet192168110
Binaire11000000101010000000000100001010

192.168.1.10 = 11000000.10101000.00000001.00001010.

Le masque /24 s'écrit avec 24 bits à 1 suivis de 8 bits à 0 : 11111111.11111111.11111111.00000000, soit 255.255.255.0. Les valeurs possibles d'un octet de masque sont celles où les 1 sont tous à gauche :

Bits à 1012345678
Octet binaire000000001000000011000000111000001111000011111000111111001111111011111111
Décimal0128192224240248252254255

Le calcul de l'adresse de réseau à partir de l'adresse et du masque utilise le ET logique bit à bit (chapitre 4). Le cours réseaux détaille le calcul du réseau, de la diffusion et du nombre d'hôtes.

Application : adresses MAC, IPv6 et couleurs

Adresse MAC. Une adresse MAC compte 48 bits, écrits en 6 octets hexadécimaux : 3C:52:82:1A:F0:7E. Les trois premiers octets identifient le fabricant de la carte réseau (OUI). Le dernier octet, (7E)₁₆, vaut 7 × 16 + 14 = 126, soit (01111110)₂.

Adresse IPv6. Une adresse IPv6 compte 128 bits, écrits en 8 groupes de 4 chiffres hexadécimaux (16 bits chacun) séparés par « : ». Le groupe 0db8 vaut (0000 1101 1011 1000)₂. Les zéros de tête d'un groupe peuvent être omis (db8), et une suite de groupes nuls peut être remplacée une fois par « :: ».

Couleur web. En CSS, #1E90FF désigne une couleur par ses trois composantes rouge, vert, bleu, chacune sur un octet :

ComposanteHexadécimalCalculDécimal
Rouge1E1 × 16 + 1430
Vert909 × 16 + 0144
BleuFF15 × 16 + 15255

#1E90FF et rgb(30, 144, 255) désignent la même couleur. Avec 256 valeurs par composante, on obtient 256³ = 2²⁴ = 16 777 216 couleurs. Le cours HTML et CSS détaille les autres notations de couleurs.

Les conversions en Python

Python fait toutes ces conversions. Elles te servent à vérifier tes calculs, pas à les remplacer à l'écrit.

python
bin(156)          # '0b10011100'
hex(2026)         # '0x7ea'
int('10011100', 2)   # 156
int('7EA', 16)       # 2026
format(10, '08b')    # '00001010' : 8 bits, complété par des 0
format(255, '02X')   # 'FF' : 2 chiffres hexadécimaux en majuscules

Le chapitre 11 programme les mêmes conversions à la main, avec les divisions successives, comme un sujet peut te le demander.

Exercices

Exercice 1 sur 5 Décimal vers binaire Réussi À revoir

Convertis en binaire, par la méthode de ton choix, puis vérifie.

  1. 45
  2. 200
  3. 255
  4. 1 000
Voir la réponseMasquer la réponse de l'exercice 1
  1. 45 = 32 + 8 + 4 + 1 = (101101)₂.
  2. 200 = 128 + 64 + 8 = (11001000)₂.
  3. 255 = 256 − 1 : huit bits à 1, (11111111)₂.
  4. Divisions successives : 1 000 → 500 r 0 → 250 r 0 → 125 r 0 → 62 r 1 → 31 r 0 → 15 r 1 → 7 r 1 → 3 r 1 → 1 r 1 → 0 r 1. Restes lus de bas en haut : (1111101000)₂. Vérification : 512 + 256 + 128 + 64 + 32 + 8 = 1 000.

Tu avais trouvé ?

Exercice 2 sur 5 Décimal vers hexadécimal Réussi À revoir

Convertis en hexadécimal.

  1. 171
  2. 4 096
  3. 3 054
Voir la réponseMasquer la réponse de l'exercice 2
  1. 171 ÷ 16 = 10 reste 11 ; 10 ÷ 16 = 0 reste 10. Restes de bas en haut : A, B. 171 = (AB)₁₆. Vérification : 10 × 16 + 11 = 171.
  2. 4 096 = 16³ : (1000)₁₆.
  3. 3 054 ÷ 16 = 190 reste 14 (16 × 190 = 3 040) ; 190 ÷ 16 = 11 reste 14 ; 11 ÷ 16 = 0 reste 11. Restes de bas en haut : B, E, E. 3 054 = (BEE)₁₆. Vérification : 11 × 256 + 14 × 16 + 14 = 2 816 + 224 + 14 = 3 054.

Tu avais trouvé ?

Exercice 3 sur 5 Binaire et hexadécimal Réussi À revoir

  1. Convertis en hexadécimal : (11011110)₂, (101010111100)₂ et (1111100001)₂.
  2. Convertis en binaire : (5A)₁₆, (C0DE)₁₆ et (208)₁₆.
Voir la réponseMasquer la réponse de l'exercice 3
  1. Par paquets de 4 bits depuis la droite :
    • 1101 1110 → (DE)₁₆ ;
    • 1010 1011 1100 → (ABC)₁₆ ;
    • 11 1110 0001 → 0011 1110 0001 → (3E1)₁₆.
  2. Chaque chiffre donne 4 bits :
    • 5A → 0101 1010 ;
    • C0DE → 1100 0000 1101 1110 ;
    • 208 → 0010 0000 1000, soit (1000001000)₂ sans les zéros de tête. Attention au 0 du milieu, qui donne bien 0000.

Tu avais trouvé ?

Exercice 4 sur 5 Adresse IP et masque Réussi À revoir

Un poste a l'adresse 172.16.45.200 avec le masque 255.255.240.0.

  1. Écris l'adresse en binaire, octet par octet.
  2. Écris le masque en binaire. Combien de bits valent 1 ? Donne la notation CIDR.
  3. Écris le troisième octet de l'adresse (45) en hexadécimal.
Voir la réponseMasquer la réponse de l'exercice 4
  1. 172 = 128 + 32 + 8 + 4 → 10101100 ; 16 → 00010000 ; 45 = 32 + 8 + 4 + 1 → 00101101 ; 200 = 128 + 64 + 8 → 11001000.

    10101100.00010000.00101101.11001000

  2. 255 → 11111111, 255 → 11111111, 240 → 11110000, 0 → 00000000. Il y a 8 + 8 + 4 = 20 bits à 1 : le masque est un /20.

  3. 45 = (0010 1101)₂ = (2D)₁₆. Vérification : 2 × 16 + 13 = 45.

Tu avais trouvé ?

Exercice 5 sur 5 Couleurs Réussi À revoir

  1. Donne les composantes décimales de la couleur #FF8C00.
  2. Écris en hexadécimal la couleur rgb(46, 139, 87).
Voir la réponseMasquer la réponse de l'exercice 5
  1. FF = 255, 8C = 8 × 16 + 12 = 140, 00 = 0 : rgb(255, 140, 0), un orange.
  2. 46 = 2 × 16 + 14 → 2E ; 139 = 8 × 16 + 11 → 8B ; 87 = 5 × 16 + 7 → 57. La couleur est #2E8B57. Chaque composante s'écrit avec deux chiffres, même si le premier est 0.

Tu avais trouvé ?

Chapitre terminé !

Fais les 5 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Nombres à virgule en binaire : arrondi, précision, flottantsRevoir le sommaire du cours