3 / 20 · Concept
Politique de sortie en virgule fixe
Distinguez l’échelle des entrées, l’arrondi négatif, la saturation et le rebouclage modulaire.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Les bits stockent un entier ; l’échelle lui donne son sens
Représentez x par un entier X et F bits fractionnaires, de sorte que x=X/2^F. Nous utilisons le même F pour A et B. Leur produit et l’accumulateur ont 2F bits fractionnaires. Convertir la somme brute finale S à l’échelle d’entrée nécessite une division par 2^F. Convertissez une seule fois après la réduction complète ; arrondir d’abord chaque terme peut supprimer des contributions qui deviendraient significatives une fois réunies.
Pour F=4, [1.5, −0.5] est stocké comme [24, −8] et [0.25, 2.0] comme [4, 32]. Le produit scalaire brut vaut 24×4−8×32=−160. Sa valeur réelle est −160/256=−0.625 et son entier de sortie à F=4 vaut −10.
Tester explicitement l’arrondi négatif
Pour S=−17 et F=4, l’entier de sortie exact vaut −1.0625. Un décalage arithmétique à droite donne −2 ; une troncature vers zéro donne −1. L’arrondi au plus proche avec égalités vers le pair donne aussi −1. Un décalage arithmétique n’est donc pas interchangeable avec toute interprétation de « supprimer la partie fractionnaire ». Aux valeurs à mi-chemin −24/16=−1.5 et −40/16=−2.5, l’arrondi vers le pair choisit −2 dans les deux cas.
Notre conversion par défaut arrondit la somme complète au plus proche, avec égalités vers le pair, puis sature à la largeur de sortie. Sur la valeur absolue, calculez le quotient q et le reste r. Incrémentez q lorsque r dépasse la moitié du diviseur, ou lorsqu’il est égal à cette moitié et que q est impair. Rétablissez ensuite le signe d’origine. En RTL, calculer la valeur absolue du nombre le plus négatif nécessite une variable temporaire plus large ; la référence Node utilise BigInt.
Définir le débordement à la sortie
Une sortie signée sur huit bits couvre −128..127. Une valeur arrondie de 130 sature à 127 ou reboucle à −126. Une valeur de −130 sature à −128 ou reboucle à 126. L’une ou l’autre politique peut être intentionnelle, mais doit être nommée et testée.
Comparez séparément l’accumulateur brut et la sortie convertie. Une somme brute incorrecte oriente vers l’arithmétique ou l’ordonnancement ; une somme correcte avec une sortie incorrecte oriente vers l’échelle, l’arrondi ou la saturation. Conservez des cas limites calculés à la main pour empêcher la référence et le RTL de masquer la même erreur de conversion.
Essayez vous-même
Trouvez le résultat de l’arrondi vers le pair pour F=4, S=−56, et la sortie saturée sur huit bits pour F=4, S=−2080.
Lire l’explication
−56/16=−3.5 s’arrondit à l’entier pair −4. −2080/16=−130, qui sature à −128 après l’arrondi.