Altifigence Academy

5 / 24 · Concept

Bits et unités en virgule fixe

Multipliez 0.5 et −1.25 à F=4, puis ajoutez le biais 0.25 à F=8. Quels sont le code de l’accumulateur et la valeur réelle ?

Associer une unité à l’entier

La virgule fixe représente une valeur réelle avec un code entier et une échelle fixe. Nous définissons huit bits au total, un stockage signé en complément à deux et quatre bits fractionnaires, F=4. Un code q représente q×2⁻⁴. Les conventions de nommage du format Q peuvent diverger sur l’inclusion du signe parmi les bits entiers : indiquez donc explicitement la largeur totale, le caractère signé et F. Les codes −128 à 127 représentent −8 à 7.9375.

La même configuration de bits change de signification selon son échelle. Le code 24 représente 1.5 à F=4, mais trois à F=3. Additionner des codes d’unités différentes est incorrect même avec un additionneur large. Alignez d’abord les échelles et définissez l’arrondi et le débordement éventuellement introduits par cet alignement.

Exemple détaillé

Codez 1.5 par 24 et −0.75 par −12. Le produit entier vaut −288. Les largeurs fractionnaires s’additionnent : le produit a donc F=8 et représente −288/256=−1.125. Le produit complet de deux opérandes signés sur huit bits tient sur seize bits, mais la somme de nombreux produits nécessite un calcul distinct de largeur d’accumulateur. Arrondir chaque produit à F=4 introduit une erreur sur chaque terme. Notre contrat conserve l’échelle du produit pendant l’accumulation et arrondit une seule fois en sortie.

Un biais réel de 0.5 devient le code 128 à F=8. L’ajouter donne −160, représentant −0.625. Ajouter le code huit, qui correspond au biais à F=4, utiliserait la mauvaise unité. Documentez l’échelle du biais avec son code stocké.

Lorsque vous élargissez un code négatif en complément à deux, répétez le bit de signe. La représentation sur huit bits de −12 est 11110100 ; son extension sur seize bits est 1111111111110100. Une extension par zéros la transforme en +244. Déclarez les opérandes et résultats intermédiaires RTL signés, avec des largeurs explicites, au lieu de supposer qu’une destination étroite corrige la taille de l’expression.

Les échelles en puissances de deux rendent la relation de décalage facile à examiner. La quantification affine générale utilise d’autres échelles positives et un point zéro. Gardez ensemble le code, l’échelle et la valeur représentée dans vos notes de conception pour que la multiplication, l’accumulation et la conversion finale restent compréhensibles.

Essayez vous-même

Multipliez 0.5 et −1.25 à F=4, puis ajoutez le biais 0.25 à F=8. Quels sont le code de l’accumulateur et la valeur réelle ?

Lire l’explication

Les codes sont huit et −20, donnant le produit −160. Le code du biais vaut 64. L’accumulateur −96 à F=8 représente −0.375.

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