Comment un petit microcontrôleur sans calcul flottant peut-il manipuler des nombres à virgule ?
En virgule fixe, on représente x par l'entier arrondi de x × 2⁸ : 0,1 devient 26, qui vaut 26/256 ≈ 0,1016, soit une erreur de 0,0016, au plus 1/512. Les multiplications se font sur des entiers, puis on divise par 256 par un décalage de 8 bits. C'est rapide, mais il faut surveiller la précision et les dépassements.
Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 9,5 min.
Pourquoi cette question : un modèle d'introduction
Le jury attend que vous expliquiez pourquoi vous avez choisi la question. Inspirez-vous de ce modèle, mais racontez votre propre parcours.
En sciences de l'ingénieur, nous avons programmé un correcteur sur un microcontrôleur très simple qui ne sait calculer qu'avec des entiers. Pourtant, le gain du correcteur valait 0,1. Le professeur nous a montré la « virgule fixe », qui consiste à multiplier tout par une puissance de 2. J'ai voulu comprendre la précision obtenue et les pièges de cette méthode.
L'enjeu et les notions du programme
Représenter des nombres décimaux par des fractions de dénominateur 2ⁿ, majorer l'erreur d'arrondi et analyser les opérations.
Mathématiques
- Nombres décimaux et rationnels, arrondi (seconde)
- Puissances de 2, écriture binaire (seconde)
- Majoration d'une erreur, valeur absolue (seconde)
Sciences de l'ingénieur
- Programmation embarquée, contraintes de calcul (terminale)
- Codage de l'information (première)
Le plan de l'exposé en 9,5 min
1. Introduction
1 minBeaucoup de petits microcontrôleurs n'ont pas d'unité de calcul flottant : les calculs avec virgule y sont très lents. Problématique : comment calculer avec des nombres comme 0,1 en n'utilisant que des entiers ?
2. Mathématiques : des fractions de dénominateur 256
4 minOn choisit un facteur d'échelle 2⁸=256. Un réel x est représenté par l'entier X= arrondi (256x). La valeur représentée est X/256 : un nombre décimal dyadique.
Exemple : 0,1×256=25,6, arrondi à 26. La valeur représentée est 26/256=0,1015625, avec une erreur de 0,0016. L'arrondi à l'entier le plus proche garantit une erreur d'au plus 1/2×1/256=1/512≈0,002.
Multiplication : pour calculer 0,1× y, on calcule l'entier 26× Y, puis on divise par 256, ce qui revient à décaler de 8 bits vers la droite. Pour y=100 : 26×100=2 600, et 2 600gg8=10 (quotient de 2 600 par 256). Résultat 10 au lieu de 10, correct ici, mais les erreurs d'arrondi s'accumulent sur de longs calculs.
Avec un facteur 2¹⁶, l'erreur tombe à 1/(131 072), mais les entiers deviennent plus grands : il faut des registres plus larges pour éviter les dépassements de capacité.
3. SI : choisir le format
3 minOn choisit le nombre de bits après la virgule selon la précision voulue, et le nombre de bits avant la virgule selon les valeurs maximales, pour éviter les dépassements. Un dépassement peut inverser le signe d'une commande : un moteur repartirait brutalement en sens inverse.
La virgule fixe est utilisée dans le traitement audio, les asservissements et les jeux vidéo anciens. Elle est rapide et prévisible, mais exige une analyse soigneuse des ordres de grandeur. Les microcontrôleurs plus puissants ont une unité flottante qui fait ces choix automatiquement.
4. Conclusion
1,5 minEn virgule fixe, 0,1 devient 26/256≈0,1016, avec une erreur d'au plus 1/512 ; les calculs se font sur des entiers et des décalages. La précision dépend de la puissance de 2 choisie, au prix de plus grands entiers. J'ouvre sur les nombres flottants, qui adaptent automatiquement l'échelle.
Ce que j'écris au tableau
Pas de calculatrice ni de support numérique : un calcul clé écrit au tableau rend l'exposé concret et montre la solidité des connaissances.
0,1×100: 26×100=2 600, 2 600gg8=10 2¹⁶: | erreur |≤1/(131 072)
Conclusion : la réponse à la question
Calculer en virgule fixe, c'est travailler avec des fractions de dénominateur 2ⁿ : la précision et les risques de dépassement se calculent à l'avance. Une technique simple pour faire beaucoup avec peu de matériel.
Les questions probables du jury
Pendant les 10 minutesd'échange, le jury vous fait préciser et approfondir, sur tout le programme de vos spécialités en lien avec la question.
Représentez 0,75 en virgule fixe avec 2⁸.
0,75 × 256 = 192, exactement, sans erreur.
Pourquoi 0,75 est-il exact et pas 0,1 ?
0,75 = 3/4 a un dénominateur puissance de 2 ; 0,1 = 1/10 contient le facteur 5.
Que fait un décalage de 8 bits vers la droite ?
Il donne le quotient de la division euclidienne par 2⁸ = 256.
Quelle erreur maximale avec un facteur 2¹⁰ ?
1/(2×1 024)=1/(2 048)≈0,0005.
Quel danger en cas de dépassement ?
L'entier peut changer de signe, et la commande devenir aberrante.
Les pièges qui coûtent des points
- Croire que 0,1 est représentable exactement.
- Oublier de rediviser par 2ⁿ après une multiplication.
- Négliger les dépassements de capacité.
Revoir les notions
Autres questions : information et commande numérique
- Comment simplifier la logique d'une alarme pour utiliser moins de composants ?
- Comment un microcontrôleur cadencé à 16 MHz peut-il produire exactement une impulsion par seconde ?
- Combien de tâches un système embarqué peut-il exécuter à temps, et pourquoi le nombre ln 2 apparaît-il ?
- Pourquoi ne peut-on pas avoir à la fois une commande de moteur très fine et une fréquence très élevée ?
Préparer l'oral, pas seulement le contenu
Gestion des 20 minutes de préparation, usage du tableau, posture debout, réponses au jury : la méthode complète, conforme aux règles de la session 2027.
Méthode : traiter une question de Grand oral →