Chapitre 13
Systèmes de numération (partie 1/2)
Lecture : 11 minQuiz de 10 questions
## Objectifs et prérequis
**Objectifs** : À la fin de ce chapitre, l’élève sera capable de :
- expliquer le principe des systèmes de numération positionnels et définir la base d’un système ;
- convertir un nombre entre les bases décimale, binaire, octale et hexadécimale avec les méthodes de division successive et de développement en polynôme ;
- utiliser les systèmes binaire, octal et hexadécimal pour représenter des états logiques, adresser une mémoire ou coder des informations dans un automate programmable (API) ;
- reconnaître et appliquer les codes BCD et Gray dans des situations d’automatisme industriel.
**Prérequis** : maîtrise des opérations arithmétiques de base (addition, soustraction, multiplication, division) en base 10, notion de puissance d’un entier, familiarité avec le vocabulaire de l’automatisme (bit, octet, registre, bus).
## Introduction
Dans les équipements d’automatisme industriel présents au Cameroun (automates programmables, variateurs de vitesse, systèmes de commande numérique), les informations sont traitées sous forme de signaux numériques. Ces signaux sont représentés par des suites de bits (0 ou 1) qui s’organisent selon des systèmes de numération adaptés aux contraintes matérielles (largeur de bus, capacité de mémoire, facilité de lecture). Le système décimal, bien que naturel pour l’homme, est rarement utilisé directement dans le matériel ; on privilégie le binaire pour sa correspondance avec les deux états électriques, l’octal et l’hexadécimal pour leur compacité lorsqu’on regroupe des bits, et le BCD ou le Gray pour des applications spécifiques (affichage, codage de position). Ce chapitre présente les fondements théoriques et les procédés pratiques permettant de passer d’une représentation à l’autre, ainsi que leur mise en œuvre dans des situations professionnelles réalistes.
## I. Systèmes de numération positionnels
### A. Principe de position et base
Un système de numération **positionnel** représente un nombre comme une somme de puissances de sa base \(b\) multipliées par des chiffres compris entre 0 et \(b-1\) :
\[
N = d_{k}\,b^{k}+d_{k-1}\,b^{k-1}+ \dots + d_{1}\,b^{1}+d_{0}\,b^{0}
\]
où chaque \(d_i\) est un chiffre du système. La **base** \(b\) définit le nombre de symboles distincts utilisés.
> **Définition** : Un système de numération positionnel de base \(b\) utilise exactement les symboles \(\{0,1,\dots ,b-1\}\) et la valeur d’un chiffre dépend de sa position (puissance de \(b\)).
### B. Systèmes décimal, binaire, octal, hexadécimal
| Système | Base \(b\) | Symboles utilisés | Utilisation fréquente en automatisme |
|---------|------------|-------------------|--------------------------------------|
| Décimal | 10 | 0‑9 | Lecture humaine, consignes d’opérateur |
| Binaire | 2 | 0,1 | États logiques (bit), entrées/sorties digitales |
| Octal | 8 | 0‑7 | Représentation compacte de groupes de 3 bits (ex. adresses mémoire anciennes) |
| Hexadécimal | 16 | 0‑9, A‑F | Représentation compacte de groupes de 4 bits (ex. registres d’API, adresses mémoire modernes) |
### C. Tableau de correspondance (exemple)
| Décimal | Binaire | Octal | Hexadécimal |
|---------|---------|-------|-------------|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| … | … | … | … |
| 15 | 1111 | 17 | F |
| 16 | 1 0000 | 20 | 10 |
| 255 | 1111 1111 | 377 | FF |
> **Règle** : Pour passer du binaire à l’octal, regrouper les bits par paquets de 3 en partant de la droite ; pour l’hexadécimal, regrouper par paquets de 4.
## II. Méthodes de conversion
### A. Conversion décimal → autre base (division successive)
Pour convertir un entier décimal \(N\) en base \(b\) :
1. Diviser \(N\) par \(b\) ; le reste est le chiffre de poids faible.
2. Remplacer \(N\) par le quotient entier.
3. Répéter jusqu’à ce que le quotient soit nul.
4. Lire les restes dans l’ordre inverse.
**Exemple** : Convertir \(N=137_{10}\) en binaire.
\[
\begin{array}{rcl}
137 \div 2 &=& 68\ \text{reste}\ 1\\
68 \div 2 &=& 34\ \text{reste}\ 0\\
34 \div 2 &=& 17\ \text{reste}\ 0\\
17 \div 2 &=& 8\ \text{reste}\ 1\\
8 \div 2 &=& 4\ \text{reste}\ 0\\
4 \div 2 &=& 2\ \text{reste}\ 0\\
2 \div 2 &=& 1\ \text{reste}\ 0\\
1 \div 2 &=& 0\ \text{reste}\ 1\\
\end{array}
\]
Lecture des restes de bas en haut : \(137_{10}=10001001_{2}\).
> **Formule** : \(N_{10}= \sum_{i=0}^{k} d_i b^{i}\) où les \(d_i\) sont les restes obtenus.
### B. Conversion autre base → décimal (développement en polynôme)
On écrit le nombre sous la forme \(\displaystyle N = \sum d_i b^{i}\) et on calcule chaque terme.
**Exemple** : Convertir \(3A7_{16}\) en décimal.
\[
3A7_{16}=3\times16^{2}+10\times16^{1}+7\times16^{0}=3\times256+10\times16+7=768+160+7=935_{10}
\]
### C. Conversion entre bases non décimales
Deux méthodes courantes :
1. **Via le décimal** : convertir la source en décimal puis le décimal en cible.
2. **Regroupement direct** : lorsque les bases sont des puissances de 2 (2, 4, 8, 16) on regroupe les bits.
**Exemple** : Convertir \(110101_{2}\) en octal.
Regrouper par 3 à partir de la droite : \(110\ 101\) → \(6\ 5\) → \(65_{8}\).
### D. Exemple chiffré entièrement résolu
**Situation** : Un technicien doit entrer l’adresse mémoire \(2048_{10}\) dans un API qui accepte l’adresse en hexadécimal.
1. Conversion décimal → hexadécimal (division successive) :
\[
\begin{array}{rcl}
2048 \div 16 &=& 128\ \text{reste}\ 0\\
128 \div 16 &=& 8\ \text{reste}\ 0\\
8 \div 16 &=& 0\ \text{reste}\ 8\\
\end{array}
\]
Lecture des restes : \(2048_{10}=800_{16}\).
2. Vérification : \(8\times16^{2}+0\times16^{1}+0\times16^{0}=8\times256=2048\).
**Résultat** : L’adresse à saisir est **800** (hexadécimal).
## III. Utilisation en automatisme
### A. Représentation des états logiques (bits)
Dans un automate, chaque entrée ou sortie digitale est associée à un **bit** (0 = bas, 1 = haut). Un mot de 8 bits (un **octet**) peut coder 256 états différents, suffisants pour représenter des commandes simples ou des compteurs de petite capacité.
> **Définition** : Un **bit** est l’unité minimale d’information pouvant prendre les valeurs 0 ou 1, correspondant aux deux états possibles d’un signal numérique.
### B. Adressage mémoire et bus
Les bus d’adresse d’un API sont souvent de largeur 16 bits, permettant d’adresser \(2^{16}=65536\) octets (de 0000 h à FFFF h). L’utilisation de l’hexadécimal simplifie la lecture : l’adresse \(1A3F_{h}\) se lit immédiatement comme un groupe de quatre hexadécimaux.
### C. Codes BCD et Gray
- **BCD (Binary‑Coded Decimal)** : chaque chiffre décimal est codé sur 4 bits (ex. 5 → 0101). Utilisé pour les afficheurs à sept segments où chaque décimal doit être directement accessible.
- **Code Gray** : succession où deux valeurs consécutives ne diffèrent que d’un seul bit, réduisant les risques d’erreur lors du comptage mécanique (encodeurs rotatifs).
**Exemple BCD** : Le nombre \(237_{10}\) s’écrit \(0010\ 0011\ 0111_{2}\) (groupes de 4 bits).
**Exemple Gray** : Le code Gray de 3 bits pour les valeurs 0‑7 est : 000, 001, 011, 010, 110, 111, 101, 100.
> **Règle de conversion Binaire → Gray** : \(g_i = b_i \oplus b_{i+1}\) (où \(\oplus\) désigne l’OU exclusif, \(b_{k+1}=0\)).
### D. Exemple d’atelier : programmation d’un API pour un convoyeur
**Contexte** : Une usine de transformation du cacao au Cameroun utilise un convoyeur à bande dont la vitesse doit être réglée selon trois niveaux : lent (0), moyen (1), rapide (2). Le technicien choisit d’encoder la vitesse sur deux bits : 00 = lent, 01 = moyen, 10 = rapide, 11 = arrêt d’urgence.
1. **Déclaration des variables** (langage Ladder simplifié) :
```c
// Entrées : I0.0 = bouton lent, I0.1 = bouton moyen, I0.2 = bouton rapide
// Sorties : Q0.0 = voyant lent, Q0.1 = voyant moyen, Q0.2 = voyant rapide
// Variable interne : Vitesse (2 bits) stockée en MB0
```
2. **Logique de sélection** :
- Si I0.0 = 1 alors MB0 := 00
- Sinon si I0.1 = 1 alors MB0 := 01
- Sinon si I0.2 = 1 alors MB0 := 10
- Sinon MB0 := 11 (arrêt d’urgence)
3. **Affichage** :
- Q0.0 := NOT(MB0.1) AND NOT(MB0.0)
- Q0.1 := NOT(MB0.1) AND MB0.0
- Q0.2 := MB0.1 AND NOT(MB0.0)
- Q0.3 (voyant d’arrêt) := MB0.1 AND MB0.0
Cet exemple montre comment la représentation binaire de l’information permet de réduire le câblage (une seule mémoire interne au lieu de trois fils séparés) et d’implémenter facilement des logique de priorité et de sécurité.
## Synthèse du chapitre
- Les systèmes de numération positionnels reposent sur une base \(b\) et la valeur d’un chiffre dépend de sa puissance de \(b\).
- Les bases les plus utilisées en automatisme sont 2 (binaire), 8 (octal), 16 (hexadécimal) et, pour certains afficheurs, le BCD.
- Conversion décimal → autre base : division successive, lecture des restes dans l’ordre inverse.
- Conversion autre base → décimal : développement en polynôme \(\sum d_i b^{i}\).
- Conversion entre bases puissances de 2 : regroupement de bits (3 bits → octal, 4 bits → hexadécimal).
- En automatisme : un bit représente un état logique ; un octet regroupe 8 bits ; l’adressage mémoire se fait en hexadécimal pour compacité ; le BCD code chaque décimal sur 4 bits ; le Gray minimise les variations de bits entre valeurs consécutives.
- Exemple pratique : codage de la vitesse d’un convoyeur sur deux bits dans un API, illustrant l’économie de câblage et la clarté de la programmation.
## Glossaire
| Terme | Définition |
|-------|------------|
| Base | Nombre de symboles distincts utilisés dans un système de numération positionnelle. |
| Bit | Unité minimale d’information pouvant prendre les valeurs 0 ou 1. |
| Octet | Groupe de 8 bits, pouvant coder 256 valeurs différentes. |
| BCD (Binary‑Coded Decimal) | Codage où chaque chiffre décimal est représenté sur 4 bits. |
| Code Gray | Succession de codes où deux valeurs consécutives ne diffèrent que d’un seul bit. |
| Adressage mémoire | Technique permettant de localiser une donnée dans une mémoire grâce à un numéro (adresse) exprimé généralement en hexadécimal. |
| Bus | Ensemble de lignes physiques transmettant des données, des adresses ou des commandes entre les composants d’un système. |
| OU exclusif (\(\oplus\)) | Opération logique donnant 1 si les deux entrées sont différentes, 0 sinon. |
## Exercices d'application corrigés
### Exercice 1 – Conversion d’une consigne de température
**Énoncé** : Un régulateur de température indique une consigne de \(75^{\circ}\text{C}\). L’automate accepte la consigne en hexadécimal sur 8 bits (un octet). Quelle valeur hexadécimale doit-on écrire dans le registre ?
**Corrigé** :
1. Convertir \(75_{10}\) en binaire :
\[
75 \div 2 = 37\ r1,\; 37 \div 2 = 18\ r1,\; 18 \div 2 = 9\ r0,\; 9 \div 2 = 4\ r1,\; 4 \div 2 = 2\ r0,\; 2 \div 2 = 1\ r0,\; 1 \div 2 = 0\ r1
\]
Lecture des restes : \(75_{10}=1001011_{2}\).
2. Compléter à 8 bits : \(01001011_{2}\).
3. Regrouper par 4 bits : \(0100\ 1011\) → \(4\ B\) → \(4B_{16}\).
**Réponse** : \(4B_{16}\).
### Exercice 2 – Décodage d’une entrée codeur Gray
**Énoncé** : Un encodeur rotatif fournit un code Gray de 4 bits : \(1101_{G}\). Déterminer la valeur binaire correspondante puis la valeur décimale.
**Corrigé** :
Conversion Gray → binaire :
- \(b_3 = g_3 = 1\)
- \(b_2 = b_3 \oplus g_2 = 1 \oplus 1 = 0\)
- \(b_1 = b_2 \oplus g_1 = 0 \oplus 0 = 0\)
- \(b_0 = b_1 \oplus g_0 = 0 \oplus 1 = 1\)
Donc binaire : \(1001_{2}\).
Conversion binaire → décimal : \(1\times2^{3}+0\times2^{2}+0\times2^{1}+1\times2^{0}=8+0+0+1=9_{10}\).
**Réponse** : Binaire \(1001_{2}\), décimal \(9_{10}\).
### Exercice 3 – Utilisation du BCD pour un afficheur
**Énoncé** : Un afficheur à sept segments reçoit le nombre BCD \(0100\ 1001\ 0010_{2}\). Quel nombre décimal est affiché ?
**Corrigé** : Séparer en groupes de 4 bits : \(0100\) → 4, \(1001\) → 9, \(0010\) → 2.
Le nombre affiché est **492**.
## Erreurs fréquentes et règles de sécurité
| # | Erreur fréquente | Conséquence | Règle de prévention / bonne pratique |
|---|------------------|-------------|--------------------------------------|
| 1 | Oublier de compléter à la largeur d’octet lors de la conversion décimal → binaire (ex. écrire \(101\) au lieu de \(00000101\)). | Mauvaise interprétation par l’automate, commande erronée. | Toujours compléter avec des zéros à gauche pour atteindre la taille du registre (8 bits, 16 bits, …). |
| 2 | Confondre l’ordre des restes lors de la conversion décimal → autre base (lire les restes de haut en bas). | Résultat inversé, valeur totalement différente. | Rappeler que le premier reste obtenu est le poids faible ; lire les restes dans l’ordre inverse. |
| 3 | Utiliser le code BCD pour représenter directement une valeur supérieure à 9 dans un groupe de 4 bits (ex. \(1010\)). | L’afficheur montre un symbole incohérent ou rien. | Vérifier que chaque groupe de 4 bits ne dépasse pas \(1001_{2}\) (9). En cas de dépassement, effectuer une correction (ajout de 6). |
| 4 | Négliger le bit de poids fort lors d’un déplacement d’adresse (ex. passer de \(0FFF_{h}\) à \(1000_{h}\) sans tenir compte du dépassement de segment). | Accès à une zone mémoire non prévue, risque de plantage. | Toujours contrôler que l’adresse résultante reste dans l’espace d’adressage autorisé ; utiliser des vérifications de dépassement dans le programme. |
| 5 | Effectuer une opération logique sur des signes non normalisés (ex. ajouter deux nombres en BCD sans correction). | Résultat faux, propagation d’erreur dans le processus de contrôle. | Après chaque opération arithmétique en BCD, appliquer la règle de correction : si un groupe de 4 bits dépasse 9 ou si il y a une retenue, ajouter 6 à ce groupe. |
| 6 | Travailler sur un armoire électrique sous tension lors du changement de câblage d’entrées/sorties. | Risque de choc électrique, brûlure, endommagement du matériel. | Toujours mettre l’installation hors tension, verrouiller et étiqueter (consigne de consignation) avant toute intervention ; utiliser des équipements de protection isolés (gants, lunettes). |
---
*Fin du cours.*
Quiz du chapitre
10 questions — vérifie chaque réponse pour voir l'explication.