Altifigence Academy

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 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.

Votre choix s’applique à ce navigateur. Modifiez-le à tout moment en bas de page.