Vous êtes sur la page 1sur 11

Opérations arithmétiques virgule fixe

1
Influence des opérations sur le format Qk
Qk Qk Qk Ql
• Addition: A + B A + B
Si A, B représentations Qk de a et b,
alors A+B est la représentation Qk de a+b. Qk k≠l
Qk Ql
• Multiplication
Si A représentations Qk de a A * B
et B représentations Ql de b,
alors A*B est la représentation Qk+l de a×b. Qk+l

Qk Qk
• Décalage
Si A représentations Qk de a A >> n A << n
alors A<<n A est la représentation Qk+n de a.
et A>>n A est la représentation Qk-n de a. Qk-n Qk+n

• Transtypage Qk Qk
Changer le nombre de bits sur lequel est codé un
nombre ne change pas le format Qk.
(int)L (long)I
2

Qk Qk

Influence
Addition:
des opérations sur le format Qk
Qk Qk Qk Ql
Si A, B représentations Qk de a et b,
alors A+B est la représentation Qk de a+b. A + B A + B
Format (8.0) pour la variable A
Format (8.0) pour la variable B  Format (8.0) pour A+B Qk k≠l
• Multiplication
Format (1.15) pour la variable A ET Format (1.15) pour la variable B  Qk Ql
Format (2.30) pour A+B A * B
Si A représentations Qk de a
et B représentations Ql de b, Qk+l
alors A*B est la représentation Qk+l de a×b.
• Décalage Qk Qk
Si A représentations Qk de a A >> n A << n
alors A<<n A est la représentation Qk+n de a.
et A>>n A est la représentation Qk-n de a. Qk-n Qk+n

• Transtypage Qk Qk
Changer le nombre de bits sur lequel est codé un
nombre ne change pas le format Qk.
(int)L (long)I
3
Int a; float x; Qk Qk
x = a; //erreur
x=(float) a;
Exemples pour un DSP à virgule fixe

Données de format 8 bits binaire d’un nombre entier


C’est un DSP virgule fixe avec des registres de 8 bits
Format (8.0)

Format (8.0)

Données de format 8 bits binaire d’un nombre fractionnel


C’est un DSP virgule fixe avec des registres de 8 bits
Format (4.4)

Format (4.4)

Par défaut, un DSP à virgule fixe 16 bits utilise le format (1.15) signé
Exemples pour un DSP à virgule fixe

Multiplication de deux nombres de format (1.15)

2-1 = 0.5

-20 + 2-1 = -1+0.5 = -0.5

-20 + 2-1 + 2-2 = -1+0.5+0.25 = -0.25

On a des registres de 32 bits donc le


Multiplication 32 bits en utilisant 16 bits multiplication
format est (1.31)

R0.L c’est la partie de


poids faible du registre
R0 de taille 16 bits

5
Le codage des réels en virgule flottante

6
Représentation en virgule flottante
x  (1)S  M  2 E

• Le signe S : 1 bit (0 ou 1) 1 m  e  N

• La mantisse M : réel positif codé sur m bits nombre de chiffres


significatifs
• L’exposant E : entier signé sur e bits dynamique

•Opération de normalisation:
Pour rendre la représentation unique,
1M2
M doit satisfaire en outre:

et peut donc être codé uniquement par sa


partie fractionnaire F, son bit de poids fort M  1,bm1bm2 Kb 1 b 0
étant implicitement à 1:
7
Format virgule flottante IEEE 754
Simple précision (N=32 bits) : float
x  (1)S  M  2 E
Double précision (N=64 bits) : double

float double
Signe S (1 bit) Signe S (1 bit)
Exposant E (8 bits) Exposant E (11 bits)
en binaire décalé (codé par le non-signé E+127) codé par E+1023
Fraction F (23 bits), partie fractionnaire de la mantisse Fraction F (52 bits)
Mantisse M sur 24 bits non-signés  M sur 53 bits

•Cas spéciaux
Zéro: tous les bits à 0
Underflow: exposant = 0000…2
Overflow: exposant = 1111…2
8
Dynamique en format flottant

• Pour le codage en virgule flottante


la dynamique est conditionnée par le nombre de bits de l’exposant:

x max  2 (2 e 1) 1

D’où la condition :

2e  log  x 11  e  log log x 11


2 max 2 2 max

En pratique, la dynamique est beaucoup moins contraignante en virgule


flottante qu’en virgule fixe, et requiert donc moins d’attention. 9
x  M  2E
Virgule flottante par bloc
• Simulation de la représentation ; L’accumulateur A contient
virgule flottante avec un DSP à ; une valeur sur 40 bits
virgule fixe
– La mantisse M est un réel signé ; Calcule l’exposant de A
de [-1, 1] ; et le stocke dans T
codé au format Qm-1 sur m bits EXP A
– Un autre contient l’exposant E
; Normalise A
• L’exposant est constant pour un ; en fonction de T
bloc de données NORM A
• Les calculs se font sur les
; Stocke:
mantisses, puis les résultats sont
; - la dan *AR3
mis à l’échelle en fonction de mantisse s
l ’exposant STL A,*AR3
– Dans ce cas, la normalisation est ; - l’exposant dans *AR4
plutôt ST T,*AR4
Passage de la virgule fixe à la virgule
0.5  M  1 flottante simulée sur deux entiers
10

(ASM C54x)
Représentation de nombres à Virgule Flottante pour
une mantisse de 5 bits et un exposant de 3 bit

Vous aimerez peut-être aussi