Aller au contenu
Réussir mon BTS SIO

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

Par exemple

Chapitre 115 minDébutant

Bases de numération : décimal, binaire, hexadécimal

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

À la fin de ce chapitre, tu sauras

  • lire un nombre écrit en base 2, 10 ou 16 grâce aux poids des positions ;
  • dire combien de valeurs on peut coder sur n bits ;
  • expliquer pourquoi l'informatique utilise le binaire et l'hexadécimal ;
  • distinguer bit, octet, ko et Kio.

5 exercices corrigés1 schéma

Une base de numération est la règle qui sert à écrire un nombre avec un nombre fixe de chiffres : 10 chiffres en base 10 (décimal), 2 en base 2 (binaire), 16 en base 16 (hexadécimal). Dans les trois cas, la valeur d'un chiffre dépend de sa position, et chaque position vaut une puissance de la base. Ce chapitre explique ce principe, montre comment lire un nombre écrit dans n'importe quelle base et pourquoi l'informatique utilise le binaire et l'hexadécimal.

Le principe : une numération de position

Tu utilises la base 10 depuis l'école primaire sans y penser. Dans 3 725, le chiffre 7 ne vaut pas 7 : il vaut 7 centaines, parce qu'il est en troisième position en partant de la droite. Chaque position vaut dix fois la précédente.

text
3725 = 3 × 1000 + 7 × 100 + 2 × 10 + 5 × 1
     = 3 × 10³  + 7 × 10²  + 2 × 10¹ + 5 × 10⁰

On appelle poids d'une position la puissance de la base qui lui correspond. On numérote les positions à partir de 0, de droite à gauche : la position 0 (les unités) a le poids 10⁰ = 1, la position 1 le poids 10¹ = 10, et ainsi de suite.

Cette idée se généralise à n'importe quelle base b ≥ 2 :

  • on utilise b chiffres, de 0 à b − 1 ;
  • le chiffre en position k vaut chiffre × bᵏ ;
  • la valeur du nombre est la somme de ces produits.

Le même nombre peut donc s'écrire de plusieurs façons, selon la base. Le nombre de doigts de tes deux mains s'écrit 10 en base 10, 1010 en base 2 et A en base 16. C'est pourquoi on précise la base en indice dès qu'il y a un doute : (1010)₂ = (10)₁₀ = (A)₁₆. Écrire « 1010 = 10 » sans indice est faux, ou au moins ambigu : sur une copie, mets toujours les indices.

Le binaire (base 2)

Le binaire n'utilise que deux chiffres, 0 et 1. Un chiffre binaire s'appelle un bit (de l'anglais binary digit). Chaque position vaut deux fois la précédente : les poids sont les puissances de 2.

Puissance2⁰2¹2²2³2⁴2⁵2⁶2⁷2⁸2⁹2¹⁰
Valeur12481632641282565121 024

Pour lire un nombre binaire, tu écris le poids au-dessus de chaque bit et tu additionnes les poids des bits qui valent 1.

2⁷12812⁶6402⁵3212⁴1612³802²412¹212⁰10poidsbits128 + 32 + 16 + 4 + 2 = 182les bits à 0 n’apportent rien
Chaque bit à 1 apporte son poids : (10110110)₂ = 128 + 32 + 16 + 4 + 2 = 182

(10110110)₂ = 1 × 128 + 0 × 64 + 1 × 32 + 1 × 16 + 0 × 8 + 1 × 4 + 1 × 2 + 0 × 1 = 182.

Le bit le plus à droite, de poids 1, s'appelle le bit de poids faible ; le plus à gauche, le bit de poids fort. Le bit de poids faible dit si le nombre est pair (0) ou impair (1) : (10110110)₂ se termine par 0, 182 est pair.

Pour compter en binaire, tu fais comme en décimal : quand un chiffre dépasse le plus grand chiffre de la base (1), il revient à 0 et tu ajoutes une retenue à gauche.

DécimalBinaireDécimalBinaire
0081000
1191001
210101010
311111011
4100121100
5101131101
6110141110
7111151111

Remarque que chaque puissance de 2 s'écrit avec un 1 suivi de zéros : 2 = (10)₂, 4 = (100)₂, 8 = (1000)₂. Et le nombre juste avant s'écrit avec que des 1 : 7 = (111)₂, 15 = (1111)₂.

Combien de valeurs sur n bits ?

Avec n bits, tu peux écrire 2ⁿ valeurs différentes, de 0 à 2ⁿ − 1. Chaque bit ajouté double le nombre de possibilités.

Nombre de bitsValeurs possiblesPlus grand entierOù tu le croises
121Un booléen : vrai ou faux
41615Un chiffre hexadécimal
8 (un octet)256255Un octet d'adresse IPv4, une composante de couleur
1665 53665 535Les numéros de port TCP et UDP
324 294 967 2964 294 967 295Une adresse IPv4 entière, un INT UNSIGNED en SQL
48environ 2,8 × 10¹⁴2⁴⁸ − 1Une adresse MAC
128environ 3,4 × 10³⁸2¹²⁸ − 1Une adresse IPv6

C'est pour ça qu'un octet d'adresse IPv4 ne dépasse jamais 255 : 192.168.1.300 n'est pas une adresse valide, car 300 ne tient pas sur 8 bits. Et c'est pour ça que les ports vont de 0 à 65 535.

L'hexadécimal (base 16)

L'hexadécimal utilise seize chiffres. Comme il n'existe que dix chiffres arabes, on complète avec les lettres A à F :

Chiffre hexadécimal0123456789ABCDEF
Valeur décimale0123456789101112131415
Écriture binaire sur 4 bits0000000100100011010001010110011110001001101010111100110111101111

Les poids sont les puissances de 16 :

Puissance16⁰16¹16²16³16⁴
Valeur1162564 09665 536

Pour lire un nombre hexadécimal, tu remplaces chaque lettre par sa valeur et tu multiplies par les poids :

  • (2F)₁₆ = 2 × 16 + 15 × 1 = 32 + 15 = 47 ;
  • (1A3)₁₆ = 1 × 256 + 10 × 16 + 3 × 1 = 256 + 160 + 3 = 419 ;
  • (FF)₁₆ = 15 × 16 + 15 = 240 + 15 = 255, le plus grand nombre d'un octet.

Pourquoi l'informatique utilise le binaire et l'hexadécimal

Un ordinateur ne manipule que deux états électriques : le courant passe ou ne passe pas, une cellule de mémoire est chargée ou non, une zone d'un disque est magnétisée dans un sens ou dans l'autre. Deux états, deux chiffres : toute information (nombre, texte, image, son, programme) est stockée en binaire.

Le binaire a un défaut pour les humains : il est long. 182 s'écrit avec 8 bits, une adresse IPv6 avec 128. L'hexadécimal résout ce problème : comme 16 = 2⁴, un chiffre hexadécimal remplace exactement 4 bits, et un octet (8 bits) s'écrit toujours avec 2 chiffres hexadécimaux. La conversion entre les deux bases se fait de tête, par paquets de 4 bits (chapitre 2). L'hexadécimal est donc une façon compacte et lisible d'écrire du binaire.

Où tu croises l'hexadécimalExempleCe que c'est
Adresse MAC3C:52:82:1A:F0:7E6 octets, chacun écrit avec 2 chiffres hexadécimaux
Adresse IPv62001:db8:85a3::8a2e:370:73348 groupes de 16 bits, chacun écrit avec 4 chiffres hexadécimaux
Couleur en CSS#1E90FFRouge, vert, bleu : un octet chacun (30, 144, 255)
Caractère UnicodeU+00E9Le numéro du caractère « é » (233)
Empreinte SHA-2569f86d081884c7d65…256 bits, soit 64 chiffres hexadécimaux
Code d'erreur Windows0x80070005« Accès refusé », un entier de 32 bits
Adresse mémoire0x7ffd5c3aLa position d'une donnée en mémoire, dans un débogueur

Les notations dans les langages

Chaque contexte a sa façon de signaler la base. Retiens les plus courantes :

BaseNotation mathématiquePython, C, Java, JavaScriptAutres notations
2(1011)₂0b10111011b
10(11)₁₀ ou 1111
16(B)₁₆0xBBh, #B (couleurs), &HB (VBA)

En Python, 0b1011 et 0xB sont simplement des façons d'écrire l'entier 11 : 0b1011 == 0xB == 11 vaut True. La base ne change que l'écriture, jamais la valeur.

Bits, octets et unités de stockage

Un octet (byte en anglais) est un groupe de 8 bits. C'est l'unité de base de la mémoire : chaque adresse mémoire désigne un octet, et les tailles de fichiers se comptent en octets. Le symbole de l'octet est o (et B en anglais) ; celui du bit est b ou bit. Ne confonds pas les deux : un débit de 100 Mbit/s (mégabits par seconde) correspond à 12,5 Mo/s au plus, puisqu'il faut 8 bits pour un octet.

Pour les multiples, deux systèmes coexistent :

Préfixe décimal (SI)ValeurPréfixe binaire (CEI)Valeur
kilooctet (ko)10³ = 1 000 okibioctet (Kio)2¹⁰ = 1 024 o
mégaoctet (Mo)10⁶ omébioctet (Mio)2²⁰ = 1 048 576 o
gigaoctet (Go)10⁹ ogibioctet (Gio)2³⁰ = 1 073 741 824 o
téraoctet (To)10¹² otébioctet (Tio)2⁴⁰ o

Les fabricants de disques utilisent les préfixes décimaux : un disque de 1 To contient 10¹² octets. Windows divise par 2³⁰ mais affiche « Go » : il annonce donc 10¹² ÷ 2³⁰ ≈ 931 Go pour ce disque. Aucun octet n'a disparu, seule l'unité diffère. macOS (Finder) compte en puissances de 10 et affiche bien 1 To ; sous Linux, df -h utilise les puissances de 2 (symboles G, T) et df -H les puissances de 10.

Pour aller plus loin : la base 8 (octal)

Exercices

Exercice 1 sur 5 Lire un nombre binaire Réussi À revoir

Donne l'écriture décimale de chaque nombre.

  1. (1101)₂
  2. (100000)₂
  3. (11111111)₂
  4. (1100100)₂
  5. (1000000000)₂
Voir la réponseMasquer la réponse de l'exercice 1
  1. (1101)₂ = 8 + 4 + 1 = 13.
  2. (100000)₂ = 2⁵ = 32 : un 1 suivi de cinq 0.
  3. (11111111)₂ = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255. Plus vite : huit 1, c'est 2⁸ − 1 = 255.
  4. (1100100)₂ = 64 + 32 + 4 = 100.
  5. (1000000000)₂ = 2⁹ = 512 : un 1 suivi de neuf 0.

Tu avais trouvé ?

Exercice 2 sur 5 Lire un nombre hexadécimal Réussi À revoir

Donne l'écriture décimale de chaque nombre.

  1. (1F)₁₆
  2. (80)₁₆
  3. (C8)₁₆
  4. (3E8)₁₆
  5. (FFFF)₁₆
Voir la réponseMasquer la réponse de l'exercice 2
  1. (1F)₁₆ = 1 × 16 + 15 = 31.
  2. (80)₁₆ = 8 × 16 = 128.
  3. (C8)₁₆ = 12 × 16 + 8 = 192 + 8 = 200.
  4. (3E8)₁₆ = 3 × 256 + 14 × 16 + 8 = 768 + 224 + 8 = 1 000.
  5. (FFFF)₁₆ = 15 × 4 096 + 15 × 256 + 15 × 16 + 15 = 61 440 + 3 840 + 240 + 15 = 65 535. Plus vite : 4 chiffres F, ce sont 16 bits à 1, soit 2¹⁶ − 1 = 65 535.

Tu avais trouvé ?

Exercice 3 sur 5 Combien de bits ? Réussi À revoir

  1. Combien de valeurs différentes peut-on coder sur 6 bits ? Quel est le plus grand entier ?
  2. Une entreprise veut donner un numéro unique, codé en binaire, à chacun de ses 1 500 équipements. Combien de bits faut-il au minimum ?
  3. Combien de chiffres hexadécimaux faut-il pour écrire une adresse IPv4 entière (32 bits) ? Une adresse MAC (48 bits) ?
Voir la réponseMasquer la réponse de l'exercice 3
  1. 2⁶ = 64 valeurs, de 0 à 63.
  2. Il faut 2ⁿ ≥ 1 500. 2¹⁰ = 1 024 ne suffit pas, 2¹¹ = 2 048 suffit : 11 bits.
  3. Un chiffre hexadécimal code 4 bits : 32 ÷ 4 = 8 chiffres pour une adresse IPv4, 48 ÷ 4 = 12 chiffres pour une adresse MAC (les 6 paires de 3C:52:82:1A:F0:7E).

Tu avais trouvé ?

Exercice 4 sur 5 Le disque qui rétrécit Réussi À revoir

Un technicien installe un SSD vendu pour 500 Go dans un poste Windows. L'utilisateur se plaint : l'explorateur n'affiche qu'environ 465 Go. Explique-lui pourquoi, avec le calcul.

Voir la réponseMasquer la réponse de l'exercice 4

Le fabricant compte en puissances de 10 : 500 Go = 500 × 10⁹ octets. Windows divise par 2³⁰ = 1 073 741 824 et affiche le résultat avec le symbole « Go » :

500 × 10⁹ ÷ 2³⁰ ≈ 465,66.

Le disque contient bien 500 milliards d'octets : c'est le même nombre, exprimé dans deux unités différentes (465,66 Gio en réalité). Une petite partie est aussi réservée par le système de fichiers, mais l'essentiel de l'écart vient de l'unité.

Tu avais trouvé ?

Exercice 5 sur 5 Vrai ou faux Réussi À revoir

Justifie chaque réponse.

  1. (100)₂ = (4)₁₀.
  2. Un nombre binaire qui se termine par 1 est impair.
  3. (10)₁₆ = (10)₁₀.
  4. Un octet s'écrit toujours avec exactement deux chiffres hexadécimaux (en comptant les 0 de tête).
  5. L'adresse 10.0.256.1 est une adresse IPv4 valide.
Voir la réponseMasquer la réponse de l'exercice 5
  1. Vrai : (100)₂ = 1 × 2² = 4.
  2. Vrai : tous les poids sont pairs sauf le dernier (2⁰ = 1). Le nombre est pair plus 1, donc impair.
  3. Faux : (10)₁₆ = 1 × 16 + 0 = 16.
  4. Vrai : un octet va de 0 à 255, soit de (00)₁₆ à (FF)₁₆ ; un chiffre hexadécimal code 4 bits, deux en codent 8.
  5. Faux : chaque octet d'une adresse IPv4 va de 0 à 255, et 256 demande 9 bits.

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 : Conversions entre décimal, binaire et hexadécimalRevoir le sommaire du cours