Nombres fractionnaires Binaires

Transcription

Nombres fractionnaires Binaires
Nombres Fractionnaires binaires
TS MAI
Nombres fractionnaires en BINAIRE
1 Nombres fractionnaires en virgule fixe
1.1
Généralités
Un nombre fractionnaire comporte deux parties :
!"Une valeur entière,
!"Suivie d’une valeur fractionnaire.
Les deux parties sont séparées par une virgule qui se place à droite du chiffre le moins significatif de
la partie entière (chiffre de poids unité).
EXEMPLE :
Le nombre π est un nombre fractionnaire, il s’écrit :
3,1416
Valeur
entière
1.2
Valeur
fractionnaire
Pondération de la partie fractionnaire
De même que le système de numération décimal, le système de numération Binaire est un système
pondéré. Comme nous l’avons vu pour la représentation des nombres entiers, chaque bit d’un nombre
binaire a un poids fonction de son rang (Numération et représentation des nombres). La pondération
d’un nombre fractionnaire binaire se décompose comme suit :
…
,
2 4 2 3 2 2 2 1 2 0 2 −1 2 −2 2 −3 2 −4 2 −5 …
Partie entière
Exemple : Soit le nombre binaire 1
Partie fractionnaire
1 0 1,0 1 1 0 1
Rang
b3
Poids
2 3 2 2 2 1 2 0 2 −1 2 −2 2 −3 2 −4 2 −5
Nombre
b2 b1 b0
1
1
0
1
b−1 b− 2 b−3 b− 4 b−5
0
1
1
0
1
Position de la virgule
Partie entière
Partie fractionnaire
(1 × 2 ) + (1 × 2 ) + (1 × 2 ) (1 × 2 −2 ) + (1 × 2 −3 ) + (1 × 2 −5 )
8 + 4 +1
0.25 + 0.125 + 0.03125
13
0.40625
3
2
0
1101,01101( 2 ) = 13,40625(10 )
Philippe HOARAU
1/6
Nombres Fractionnaires binaires
TS MAI
2 Conversions
2.1
Conversion Binaire / Décimal
La conversion Binaire / Décimal se fait en additionnant les produits des bits à 1 par leur poids
respectifs comme développé dans le chapitre précédent.
2.2
Conversion Décimal / Binaire
Effectuer des multiplications successives par 2 de la partie fractionnaire en conservant à chaque fois
la partie entière du résultat :
Exemple : soit le nombre 3,14à convertir en Binaire :
Partie entière (3)
3(10 ) = 11( 2 )
Partie fractionnaire (0.14)
0,14 . 2 = 0,28 = 0 + 0,28
0,28 . 2 = 0,56 = 0 + 0,56
0,56 . 2 = 1,12 = 1 + 0,12
0,12 . 2 = 0,24 = 0 + 0,24
0,24 . 2 = 0,48 = 0 + 0,48
0,48 . 2 = 0,96 = 0 + 0,96
0,96 . 2 = 1,92 = 1 + 0,92
0,92 . 2 = 1,84 = 1 + 0,84
3,14 (10 ) = 11,00100011( 2 )
On voit immédiatement que, contrairement à la partie entière, la partie fractionnaire peut s’exprimer
par une suite non finie, ce qui impose de définir un critère d’arrêt. Ce critère est la précision qui doit
être équivalente dans les deux bases. Dans l’exemple précédent, la précision décimale étant de
± 5.10 −3 , le développement en puissance de 2 −1 doit donc s’arrêter au nième terme tel que :
2 − n < 5.10 −3 soit 2 n > 0,2.10 3
Log ( 2 n ) > Log ( 200)
nLog ( 2) > Log (200)
Log ( 200)
n>
Log ( 2)
n > 7,64
éme
On s’arrêtera donc au 8
Vérification :
Partie entière
Partie fractionnaire
rang
11( 2 ) = 3(10 )
00100011 = 0,125 + 0,0078125 + 0,00390625
= 0,13671875
La précision attendue est bien obtenue.
3 Nombres fractionnaires en virgule flottante
Tout nombre N peut s’écrire sous la forme :
N = M • Be
dans laquelle :
#" N représente le nombre fractionnaire
#" M la mantisse
#" B la base du système de numération
Philippe HOARAU
2/6
Nombres Fractionnaires binaires
TS MAI
#" e la caractéristique ou exposant
Exemple :
Sous la forme virgule flottante, le nombre décimal positif
1234,56 peut s’écrire :
exposant
mantisse
1234,56 x
Ou
123,456 x
Ou
…
Ou
12,3456 x
…
….
0,123456 x
Ou
123456
x
0
10
101
10 2
….
10 4
10 −2
De la même façon, le nombre binaire positif 0111
s’écrira :
mantisse
Rappel : en représentation signé, le bit le plus à
gauche du nombre binaire représente le signe (0)
pour le signe + et (1) pour le signe -
3.1
exposant
0111
x
Ou
011,1
x
Ou
01,11
x
Ou
0,111
x
0
2
21
22
23
Signe (+)
Norme IEEE 754
#" La norme IEEE 754 (Institute of Electrical and Electronics
Engineers) définit les règles de représentation des nombres
en virgule flottante.
#" Cette représentation se fait soit sur 32 BITS (format simple)
ou sur 64 BITS (format double)
Le format simple IEEE 754 se compose de trois champs:
1. 23 bits représentant la mantisse (f)
2. 8 bits représentant l'exposant (e)
3. 1 bit représentant le signe
Ces champs sont stockés de façon contiguë dans un mots de 32 bits.
31
30
(s)
23
Exposant ( e )
22
0
Mantisse ( f )
Les bits 0 à 22 représentent la mantisse (f), avec le bit 0 comme LSB de la fraction et le bit 22 comme
MSB.
Les bits 23 à 30 représentent exposant base 2 (e), avec le bit 23 comme LSB et le bit 30 comme
MSB.
Le bit 31 contient le signe (s) avec s=0 pour le signe positif et s=1 pour le signe négatif.
Pour rendre portables des programmes utilisant les nombres flottants, la norme IEEE 754 décrit non
seulement les bornes des nombres flottants, mais elle donne aussi une convention pour représenter
des valeurs spéciales: ±∞, NaN (Not a Number) qui permettent de donner des valeurs à des divisions
Philippe HOARAU
3/6
Nombres Fractionnaires binaires
TS MAI
par zéro, ou à des racines carrées de nombres négatifs par exemple. Les valeurs spéciales
permettent d'écrire des programmes de calcul de racines de fonctions éventuellement discontinues.
Le tableau suivant donne la correspondance entre les valeurs des 3 champs s, e, f et la valeur
représentée par le format simple.
Valeur de s, e, f
Valeur numérique
S
0 < e < 255
e-127
(-1) x 2
e=0;f≠0
S
(au moins un bit de f non nul)
e-126
(-1) x 2
e=0;f=0
x 1.f (normal Nb)
x 0.f (subnormal Nb)
S
(tous les bits de f sont à 0)
(-1) x 0.0
(0 signé)
s = 0; e = 255; f = 0
+∞
s = 1; e = 255; f = 0
-∞
s = u; e = 255; f ≠ 0
NaN (Not-a-Number)
Lorsque 0<e<255, la valeur du nombre est obtenue en insérant un point immédiatement à gauche du
bit le plus significatif de la fraction, et en insérant un bit à 1 implicite à gauche du point. Si e=0, un 0
est inséré implicitement à gauche du point.
Les 23 bits de la partie fractionnaire combinés avec le bit implicite donnent un nombre de 24 bits.
3.2
Nombres caractéristiques dans le format IEEE 754
Nom commun
Représentation 32 bits
Représent.
Hexa.
Valeur
décimale
+0
0 00000000 00000000000000000000000
00000000
0.0
-0
1 00000000 00000000000000000000000
80000000
-0.0
1
0 01111111 00000000000000000000000
3F800000
1.0
2
0 10000000 00000000000000000000000
40000000
2.0
Normal Nb maxi
0 11111110 11111111111111111111111
7F7FFFFF
3.40282347e+38
Normal Nb positif mini
0 00000001 00000000000000000000000
00800000
1.17549435e-38
Subnormal Nb maxi
0 00000000 11111111111111111111111
007FFFFF
1.17549421e-38
Subnormal Nb positif mini
0 00000000 00000000000000000000001
00000001
1.40129846e-45
+∞
0 11111111 00000000000000000000000
7F800000
+ infini
-∞
1 11111111 00000000000000000000000
FF800000
- infini
Not-a-Number
0 11111111 10000000000000000000000
7FC00000
NaN
Philippe HOARAU
4/6
Nombres Fractionnaires binaires
TS MAI
Un NaN (Not-a-Number) peut être représenté par plusieurs autres combinaisons de bits satisfaisant la
définition du NaN.
3.3
Exemples de nombres au format IEEE 754
Représentation 32 bits
Représent.
Hexa
Valeur
128-127
(1,1 x 2
0 10000000 10000000000000000000000
40400000
1
)(2) = (1,1 x 2 )(2) = 11(2)
3(10)
125-127
(1,01 x 2
0 01111101 01000000000000000000000
3EA00000
-2
)(2)=(1,01 x 2 )(2)
0,0101(2)=0,3125(10)
134-127
0 10000110 00101111010000000000000
4317A000
= (1,0010111101 x 2
)(2)
7
= (1,0010111101 x 2 )(2)
= 10010111,101(2)
=151,625(10)
-(1.0 x 2
1 01111110 00000000000000000000000
BF000000
126-127
-1
)(2) = -(1.0 x 2 )(2)
-(0.1)(2) = -0.5(10)
On dit d’une mantisse qu’elle est normalisée lorsqu’elle est fractionnaire et ne comporte qu’un seul 0 à
gauche, l’exposant étant ajusté en conséquence.
Ainsi, les nombres 3,1416 d’une part, -0,00236 d’autre part présentent une mantisse normalisée
1
-2
lorsqu’ils s’écrivent respectivement 0,31416 x 10 et 0,236 x 10 .
Philippe HOARAU
5/6
Nombres Fractionnaires binaires
TS MAI
1
Nombres fractionnaires en virgule fixe ............................................................................................. 1
1.1
Généralités ................................................................................................................................ 1
1.2
Pondération de la partie fractionnaire ....................................................................................... 1
2 Conversions...................................................................................................................................... 2
2.1
Conversion Binaire / Décimal .................................................................................................... 2
2.2
Conversion Décimal / Binaire .................................................................................................... 2
3 Nombres fractionnaires en virgule flottante ...................................................................................... 2
3.1
Norme IEEE 754........................................................................................................................ 3
3.2
Nombres caractéristiques dans le format IEEE 754 ................................................................. 4
3.3
Exemples de nombres au format IEEE 754 .............................................................................. 5
Philippe HOARAU
6/6