# Les Systèmes de Numération : Les Bases ## Introduction Bienvenue dans ce premier chapitre de votre cursus en programmation. Avant de plonger dans les méandres des algorithmes et des structures de données, il est impératif de comprendre comment les machines "pensent" et "représentent" l'information. Au cœur de cette compréhension se trouvent les **systèmes de numération**. Alors que nous, humains, sommes habitués au système décimal (base 10), les ordinateurs fonctionnent sur des principes différents, principalement basés sur le système binaire (base 2). Maîtriser les conversions entre ces différents systèmes est une compétence essentielle pour tout ingénieur. Cela vous permettra notamment de comprendre le fonctionnement interne des processeurs. Ce chapitre posera les bases nécessaires pour aborder des concepts futurs tels que la [[Logique Combinatoire]] combinatoire et l'[[Encodage]]. Nous allons explorer les systèmes de numération les plus courants en informatique : décimal, binaire, octal et hexadécimal, en détaillant les méthodes de conversion entre eux. > [!note] Objectifs du chapitre > À la fin de ce chapitre, vous devrez être capable de : > - Comprendre la notion de base d'un système de numération. > - Convertir des nombres entre les bases décimale, binaire, octale et hexadécimale. --- ## I. Le Système Décimal (Base 10) : Notre Référence Commençons par ce que nous connaissons le mieux : le système décimal. C'est le système de numération que nous utilisons quotidiennement, et il est essentiel de comprendre sa structure pour mieux appréhender les autres. > [!definition] Système Décimal > Le système décimal est un système de numération **positionnel** en **base 10**. Il utilise dix symboles (chiffres) : $0, 1, 2, 3, 4, 5, 6, 7, 8, 9$. La valeur d'un chiffre dépend de sa position dans le nombre. Chaque position dans un nombre décimal représente une puissance de 10. Par exemple, le nombre $123_{10}$ (l'indice $10$ indique la base) peut être décomposé comme suit : $123_{10} = 1 \times 10^2 + 2 \times 10^1 + 3 \times 10^0$ $123_{10} = 1 \times 100 + 2 \times 10 + 3 \times 1$ $123_{10} = 100 + 20 + 3$ > [!note] Poids des chiffres > Dans un système positionnel en base $b$, un nombre $N = (c_n c_{n-1} \dots c_1 c_0)_b$ peut être exprimé par la somme pondérée de ses chiffres : > $ N = \sum_{i=0}^{n} c_i \cdot b^i $ > où $c_i$ est le chiffre à la position $i$ et $b^i$ est le poids de cette position. --- ## II. Le Système Binaire (Base 2) : Le Langage des Ordinateurs Le système binaire est le pilier de l'informatique moderne. Les composants électroniques des ordinateurs (transistors) fonctionnent comme des interrupteurs : ils sont soit activés (courant passe), soit désactivés (courant ne passe pas). Ces deux états sont naturellement représentés par deux chiffres : $0$ et $1$. > [!definition] Système Binaire > Le système binaire est un système de numération **positionnel** en **base 2**. Il utilise deux symboles (chiffres) : $0$ et $1$. Chaque chiffre binaire est appelé un **bit** (contraction de *binary digit*). ### A. Conversion Binaire vers Décimal Pour convertir un nombre binaire en décimal, on utilise la même logique que pour le décimal, mais avec des puissances de 2. > [!theorem] Règle de conversion Binaire vers Décimal > Pour convertir un nombre binaire $(c_n c_{n-1} \dots c_1 c_0)_2$ en décimal, on multiplie chaque bit par la puissance de 2 correspondant à sa position (en commençant par $2^0$ pour le bit le plus à droite) et on additionne les résultats. > $ N_{10} = \sum_{i=0}^{n} c_i \cdot 2^i $ > [!example] Exemple de conversion Binaire vers Décimal > Convertissons le nombre binaire $1011_2$ en décimal. > > $1011_2 = 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0$ > $1011_2 = 1 \times 8 + 0 \times 4 + 1 \times 2 + 1 \times 1$ > $1011_2 = 8 + 0 + 2 + 1$ > $1011_2 = 11_{10}$ ### B. Conversion Décimal vers Binaire Divisions Successives par la Base (2) > [!theorem] Règle de conversion Décimal vers Binaire (Divisions) > Pour convertir un nombre décimal en binaire : > 1. Divisez le nombre décimal par 2. > 2. Notez le reste (qui sera $0$ ou $1$). > 3. Prenez le quotient obtenu et répétez les étapes 1 et 2 jusqu'à ce que le quotient soit $0$. > 4. Le nombre binaire est formé en lisant les restes de bas en haut (le premier reste est le bit de poids faible, le dernier est le bit de poids fort). > [!example] Exemple de conversion Décimal vers Binaire (Divisions) > Convertissons le nombre décimal $13_{10}$ en binaire. > > 1. $13 \div 2 = 6$ reste $1$ > 2. $6 \div 2 = 3$ reste $0$ > 3. $3 \div 2 = 1$ reste $1$ > 4. $1 \div 2 = 0$ reste $1$ > > En lisant les restes de bas en haut : $1101_2$. > Donc, $13_{10} = 1101_2$. > [!tip] Groupement des bits > Pour faciliter la lecture des nombres binaires, il est courant de les grouper par paquets de 4 bits (appelés **nibbles** ou **quartets**), ou parfois par 8 bits (un **octet** ou **byte**). > Exemple : $1011\ 0101_2$ est plus lisible que $10110101_2$. --- ## III. Le Système Octal (Base 8) Le système octal est moins utilisé aujourd'hui que par le passé, mais il reste pertinent pour sa relation simple avec le binaire. Chaque chiffre octal peut être représenté par exactement trois bits binaires. > [!definition] Système Octal > Le système octal est un système de numération **positionnel** en **base 8**. Il utilise huit symboles (chiffres) : $0, 1, 2, 3, 4, 5, 6, 7$. ### A. Conversion Octal vers Binaire C'est la conversion la plus simple et la plus utile de l'octal. > [!theorem] Règle de conversion Octal vers Binaire > Pour convertir un nombre octal en binaire, remplacez chaque chiffre octal par son équivalent binaire sur **trois bits**. > [!example] Exemple de conversion Octal vers Binaire > Convertissons le nombre octal $37_8$ en binaire. > > - Le chiffre $3_8$ équivaut à $011_2$. > - Le chiffre $7_8$ équivaut à $111_2$. > > En concaténant les bits : $011111_2$. Le zéro initial peut être omis si ce n'est pas le bit de poids fort d'un octet : $11111_2$. > Donc, $37_8 = 11111_2$. ### B. Conversion Binaire vers Octal C'est l'inverse de la méthode précédente. > [!theorem] Règle de conversion Binaire vers Octal > Pour convertir un nombre binaire en octal : > 1. À partir de la droite, groupez les bits par paquets de trois. Si le dernier groupe à gauche n'a pas trois bits, complétez-le avec des zéros à gauche. > 2. Convertissez chaque groupe de trois bits en son chiffre octal équivalent. > [!example] Exemple de conversion Binaire vers Octal > Convertissons le nombre binaire $10110110_2$ en octal. > > 1. Groupement par trois bits à partir de la droite : $10 \ 110 \ 110_2$. > 2. Compléter le groupe de gauche : $010 \ 110 \ 110_2$. > 3. Conversion de chaque groupe : > - $010_2 = 2_8$ > - $110_2 = 6_8$ > - $110_2 = 6_8$ > > En concaténant les chiffres octaux : $266_8$. > Donc, $10110110_2 = 266_8$. ### C. Conversion Octal vers Décimal Utilise la même méthode que pour le binaire vers décimal, mais avec des puissances de 8. > [!example] Exemple de conversion Octal vers Décimal > Convertissons le nombre octal $266_8$ en décimal. > > $266_8 = 2 \times 8^2 + 6 \times 8^1 + 6 \times 8^0$ > $266_8 = 2 \times 64 + 6 \times 8 + 6 \times 1$ > $266_8 = 128 + 48 + 6$ > $266_8 = 182_{10}$ --- ## IV. Le Système Hexadécimal (Base 16) Le système hexadécimal est extrêmement important en informatique, notamment pour représenter des adresses mémoire, des codes couleurs (HTML/CSS), ou des valeurs binaires de manière plus compacte et lisible. Chaque chiffre hexadécimal peut être représenté par exactement quatre bits binaires. > [!definition] Système Hexadécimal > Le système hexadécimal est un système de numération **positionnel** en **base 16**. Il utilise seize symboles : les chiffres $0-9$ et les lettres $A-F$ pour représenter les valeurs $10-15$. > > | Symbole Hexadécimal | Valeur Décimale | Équivalent Binaire (4 bits) | > | :------------------ | :-------------- | :-------------------------- | > | 0 | 0 | 0000 | > | 1 | 1 | 0001 | > | 2 | 2 | 0010 | > | 3 | 3 | 0011 | > | 4 | 4 | 0100 | > | 5 | 5 | 0101 | > | 6 | 6 | 0110 | > | 7 | 7 | 0111 | > | 8 | 8 | 1000 | > | 9 | 9 | 1001 | > | A | 10 | 1010 | > | B | 11 | 1011 | > | C | 12 | 1100 | > | D | 13 | 1101 | > | E | 14 | 1110 | > | F | 15 | 1111 | ### A. Conversion Hexadécimal vers Binaire Similaire à l'octal, mais avec des groupes de quatre bits. > [!theorem] Règle de conversion Hexadécimal vers Binaire > Pour convertir un nombre hexadécimal en binaire, remplacez chaque chiffre hexadécimal par son équivalent binaire sur **quatre bits**. > [!example] Exemple de conversion Hexadécimal vers Binaire > Convertissons le nombre hexadécimal $A3F_{16}$ en binaire. > > - Le chiffre $A_{16}$ équivaut à $1010_2$. > - Le chiffre $3_{16}$ équivaut à $0011_2$. > - Le chiffre $F_{16}$ équivaut à $1111_2$. > > En concaténant les bits : $101000111111_2$. > Donc, $A3F_{16} = 101000111111_2$. ### B. Conversion Binaire vers Hexadécimal L'inverse de la méthode précédente. > [!theorem] Règle de conversion Binaire vers Hexadécimal > Pour convertir un nombre binaire en hexadécimal : > 1. À partir de la droite, groupez les bits par paquets de quatre. Si le dernier groupe à gauche n'a pas quatre bits, complétez-le avec des zéros à gauche. > 2. Convertissez chaque groupe de quatre bits en son chiffre hexadécimal équivalent. > [!example] Exemple de conversion Binaire vers Hexadécimal > Convertissons le nombre binaire $1110101101001_2$ en hexadécimal. > > 1. Groupement par quatre bits à partir de la droite : $1 \ 1101 \ 0110 \ 1001_2$. > 2. Compléter le groupe de gauche : $0001 \ 1101 \ 0110 \ 1001_2$. > 3. Conversion de chaque groupe : > - $0001_2 = 1_{16}$ > - $1101_2 = D_{16}$ > - $0110_2 = 6_{16}$ > - $1001_2 = 9_{16}$ > > En concaténant les chiffres hexadécimaux : $1D69_{16}$. > Donc, $1110101101001_2 = 1D69_{16}$. ### C. Conversion Hexadécimal vers Décimal Utilise la même méthode que pour le binaire ou l'octal vers décimal, mais avec des puissances de 16. > [!example] Exemple de conversion Hexadécimal vers Décimal > Convertissons le nombre hexadécimal $1D69_{16}$ en décimal. > > $1D69_{16} = 1 \times 16^3 + D \times 16^2 + 6 \times 16^1 + 9 \times 16^0$ > Rappel : $D_{16} = 13_{10}$. > $1D69_{16} = 1 \times 16^3 + 13 \times 16^2 + 6 \times 16^1 + 9 \times 16^0$ > $1D69_{16} = 1 \times 4096 + 13 \times 256 + 6 \times 16 + 9 \times 1$ > $1D69_{16} = 4096 + 3328 + 96 + 9$ > $1D69_{16} = 7529_{10}$ --- ## V. Généralisation : La Notion de Base $b$ Les principes que nous avons vus pour les bases 2, 8, 10 et 16 s'appliquent à n'importe quelle base $b$ entière et supérieure à 1. > [!definition] Système de Numération en Base $b$ > Un système de numération en base $b$ est un système positionnel qui utilise $b$ symboles distincts (chiffres) allant de $0$ à $b-1$. La valeur d'un nombre $(c_n c_{n-1} \dots c_1 c_0)_b$ est donnée par : > $ N_{10} = c_n \cdot b^n + c_{n-1} \cdot b^{n-1} + \dots + c_1 \cdot b^1 + c_0 \cdot b^0 = \sum_{i=0}^{n} c_i \cdot b^i $ ### A. Conversion d'une Base $b$ vers Décimal La formule ci-dessus est la méthode générale. > [!example] Exemple de conversion Base $b$ vers Décimal > Convertissons le nombre $210_3$ (base 3) en décimal. > > $210_3 = 2 \times 3^2 + 1 \times 3^1 + 0 \times 3^0$ > $210_3 = 2 \times 9 + 1 \times 3 + 0 \times 1$ > $210_3 = 18 + 3 + 0$ > $210_3 = 21_{10}$ ### B. Conversion de Décimal vers une Base $b$ La méthode des divisions successives est également généralisable. > [!theorem] Règle de conversion Décimal vers Base $b$ > Pour convertir un nombre décimal en base $b$ : > 1. Divisez le nombre décimal par $b$. > 2. Notez le reste. > 3. Prenez le quotient obtenu et répétez les étapes 1 et 2 jusqu'à ce que le quotient soit $0$. > 4. Le nombre en base $b$ est formé en lisant les restes de bas en haut. > [!example] Exemple de conversion Décimal vers Base $b$ > Convertissons le nombre décimal $21_{10}$ en base 3. > > 1. $21 \div 3 = 7$ reste $0$ > 2. $7 \div 3 = 2$ reste $1$ > 3. $2 \div 3 = 0$ reste $2$ > > En lisant les restes de bas en haut : $210_3$. > Donc, $21_{10} = 210_3$. --- ## Conclusion Félicitations ! Vous avez parcouru les fondamentaux des systèmes de numération, une compétence indispensable pour tout informaticien. La capacité à jongler entre les différentes bases, et en particulier entre le binaire et le décimal (ainsi que l'hexadécimal), est une seconde nature pour les professionnels du domaine. > [!summary] Points Clés à Retenir > - **Systèmes positionnels** : La valeur d'un chiffre dépend de sa position et de la base. > - **Bases courantes** : > - **Décimal (Base 10)** : $0-9$. Notre système quotidien. > - **Binaire (Base 2)** : $0, 1$. Le langage des ordinateurs (bits). > - **Octal (Base 8)** : $0-7$. Utile pour grouper 3 bits. > - **Hexadécimal (Base 16)** : $0-9, A-F$. Utile pour grouper 4 bits, très compact. > - **Conversions** : > - **Vers Décimal** : Somme des chiffres multipliés par la base élevée à la puissance de leur position. > - **Depuis Décimal** : Divisions successives par la base, lecture des restes de bas en haut. > - **Binaire $\leftrightarrow$ Octal/Hexadécimal** : Groupement/dégroupement des bits (3 pour octal, 4 pour hexadécimal). > - **Importance** : Ces systèmes sont la fondation de la représentation des données et du fonctionnement interne des ordinateurs. ## 🗓️ Historique > **Dernière mise à jour :** `01 novembre 2025` > **Rédigé par :** [[Julien DUQUENNOY]]