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