Qu'est-ce que Virgule fixe ?
Représentation des nombres fractionnaires avec une position de virgule fixée, sur la même suite de bits qu'un entier. Calculable avec des circuits arithmétiques entiers, compacts et peu gourmands, mais la plage représentable est étroite. On la note parfois par le nombre de bits fractionnaires, comme Q15.
Nom japonais: 固定小数点
« Virgule fixe » apparaît dans 6 questions d'entraînement réparties sur 1 thèmes, dont Arithmétique des ordinateurs.
Domaine: Arithmétique des ordinateurs
Comment un nombre en virgule fixe est stocké
Un nombre en virgule fixe est un entier ordinaire que le programmeur convient de diviser par une puissance de deux fixée. Sur 8 bits avec 4 bits fractionnaires, le motif 0011 1000 se lit comme l'entier 56, et sa division par 2⁴ = 16 donne 3,5 : les bits de poids fort forment la partie entière et le premier bit fractionnaire vaut 0,5. La notation Q désigne le format : Q15 est un nombre signé sur 16 bits avec 15 bits fractionnaires, couvrant de −1 jusqu'à juste en dessous de +1 avec un pas de 2⁻¹⁵, soit environ 3,05 × 10⁻⁵. La notation Qm.n indique explicitement le nombre de bits entiers et fractionnaires.
Règles de calcul
Deux nombres dans le même format s'additionnent avec un additionneur entier ordinaire, puisque leurs virgules binaires sont déjà alignées. La multiplication double le nombre de bits fractionnaires : deux valeurs Q15 donnent un produit sur 32 bits avec 30 bits fractionnaires, que l'on décale de 15 bits vers la droite pour revenir en Q15, avec arrondi si nécessaire. Le dépassement de capacité est le principal danger. Le matériel entier ordinaire reboucle, transformant un grand résultat positif en nombre négatif ; les DSP offrent donc une arithmétique saturante qui écrête à la plus grande valeur représentable. En Q15, même −1 × −1 déborde, car +1 n'est pas représentable.
Pourquoi le matériel l'utilise
Comme son contenu n'est qu'un entier, la virgule fixe ne nécessite ni alignement des exposants, ni normalisation, ni traitement des valeurs spéciales, autant d'opérations qui rendent les unités de calcul flottant plus grandes et plus gourmandes. Les multiplieurs et additionneurs entiers sont petits et rapides, ce qui convient aux microcontrôleurs bon marché sans unité flottante, aux DSP de traitement du signal et aux chemins de données sur mesure sur FPGA et ASIC, où le concepteur peut choisir exactement le nombre de bits dont l'algorithme a besoin. La contrepartie est l'effort de conception : chaque valeur intermédiaire doit être mise à l'échelle pour ne ni déborder ni perdre trop de précision.
Questions fréquentes
Que signifie Q15 en arithmétique à virgule fixe ?
Q15 est un format signé en virgule fixe sur 16 bits, avec 15 bits fractionnaires et un bit de signe. Il représente les valeurs de −1 à 1 − 2⁻¹⁵ par pas d'environ 3,05 × 10⁻⁵.
Comment convertir une valeur en virgule fixe en décimal ?
On lit le motif binaire comme un entier, puis on le divise par 2 élevé au nombre de bits fractionnaires. Par exemple, 0011 1000 avec 4 bits fractionnaires vaut 56 ÷ 16 = 3,5.
Quelle est la différence entre virgule fixe et virgule flottante ?
La virgule fixe place la virgule binaire à une position fixe convenue, ce qui donne un espacement uniforme et un matériel entier simple, mais une plage étroite. La virgule flottante ajoute un exposant, offrant une large plage avec une précision relative à peu près constante, au prix d'un matériel plus complexe.