Représentation des nombres réels 17/02/2018
Représentation des nombres réels Les nombres que nous avons utilisés jusqu’alors étaient des nombres entiers positifs ou négatifs. Il est évidemment possible de rencontrer des nombres fractionnaires qu’il conviendra de pouvoir coder en binaire. Il existe de nombreuses méthodes pour représenter ces nombres, parmi lesquelles : codage de la partie entière ; codage en virgule fixe ; codage en virgule flottante ; codage au format Qn ; … 17/02/2018 2 2
Représentation des nombres réels Codage de la partie entière Cette méthode consiste à ne coder que la partie entière du nombre réel. Elle n’est que très peu utilisée, et fourni des résultats approximatifs. Exemple : 25,375 (25,375)10 (11001)2 17/02/2018 3 3
Représentation des nombres réels 17/02/2018 4 4
Exemple Cette méthode à l’inconvénient d’utiliser beaucoup de bits après la virgule si le nombre à coder comporte beaucoup de chiffre après la virgule. 17/02/2018 5 5
Exercice 17/02/2018 6 6
Nombres binaires à virgule fixe 17/02/2018 Nombres binaires à virgule fixe N = (00011010110)2(7,4) = (13.375)10 N = (0001101,0110)2 = (13.375)10 Mot de 11 chiffres avec (n,m)= (7,4) n+m=11 Exemple mots de 3 bits (3,0) (2,1) (1,2) (0,3) (n,m) 010 2 1 0,5 0,25 011 3 1,5 0,75 0,375 100 4 2 1 0,5 101 5 2,5 1,25 0,625 110 6 3 1,5 0,75 111 7 3,5 1,75 0,875
Nombre binaire à virgule flottante 17/02/2018 Nombre binaire à virgule flottante Afin de représenter les très grands ou très petits nombres, nous utilisons généralement une méthode assez pratique appelée notation scientifique. Rappel : 125.68 = 1.2568 102 En binaire: La norme IEEE 754 normalise cette représentation. Elle distingue 2 représentations, celle en simple précision (sur 32 bits), et celle en double précision (sur 64 bits).
Nombre binaire à virgule flottante 17/02/2018 Nombre binaire à virgule flottante Représentation en simple précision Exposant – calage = décalage Exposant = décalage + 2k-1-1
Nombre binaire à virgule flottante 17/02/2018 Nombre binaire à virgule flottante Représentation en simple précision Exemple 1: Traduire en binaire format flottant simple précision 32 bits le nombre : - 1039,0 Signe : 1 Traduire en binaire (1039)10 = (0000 0100 0000 1111)2 Constituez la mantisse : 1, mantisse × 2n 0000 0100 0000 1111 = 1,00 0000 1111 × 210 (décalage de dix chiffres vers la droite après la virgule ) 1 0 0 0 0 0 0 1 1 1 1
Nombre binaire à virgule flottante 17/02/2018 Nombre binaire à virgule flottante Représentation en simple précision Constituez le calage IEEE en simple précision 8 bits : 28 - 1 - 1 = 127 Constituez l'exposant : 0000 0100 0000 1111 = 1,00 0000 1111 × 210 exposant = 10 + calage = 10 +127= 137 Exprimer l'exposant en binaire (137)10 = (1000 1001)2 Etendre la partie fractionnaire à 23 bits mantisse sur 23 bits = 000 0001 1110 0000 0000 0000 (- 1039,0)10 = (1100 0100 1000 0001 1110 0000 0000 0000)2 En hexadecimal C4 81 E0 00 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
Nombre binaire à virgule flottante La norme IEEE définit la façon de coder un nombre réel: la forme 1,xxxxx...×2n (dans notre exemple 1,0101 × 22). Cette norme se propose de coder le nombre sur 32 bits et définit trois composantes : le signe est représenté par un seul bit, le bit de poids fort (celui le plus à gauche) l'exposant est codé sur les 8 bits consécutifs au signe la mantisse (les bits situés après la virgule) sur les 23 bits restants Ainsi le codage se fait sous la forme suivante : seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm 17/02/2018 12 12
Nombre binaire à virgule : Règles Certaines conditions sont toutefois à respecter pour les exposants : l'exposant 00000000 est interdit l'exposant 11111111 est interdit. On s'en sert toutefois pour signaler des erreurs, on appelle alors cette configuration du nombre NaN, ce qui signifie Not a Number Il faut rajouter 127 (01111111) à l'exposant pour une conversion de décimal vers un nombre réel binaire. Les exposants peuvent ainsi aller de -254 à 255 17/02/2018 13 13
Nombre binaire à virgule flottante 17/02/2018 Nombre binaire à virgule flottante Représentation en double précision (64 bits) On utilise la même méthode que pour le codage en simple précision, sauf que l’exposant est codé sur 11 bits et la mantisse sur 52 bits. exposant codé = exposant réel + excédent
Nombre binaire à virgule flottante 17/02/2018 Nombre binaire à virgule flottante Limites
Nombre binaire à virgule : Exemple Soit à coder en simple précision la valeur 525,5. 525,5 est positif (-1)0 donc le 1er bit sera s = 0. Sa représentation en base 2 est la suivante : 1000001101,1 En normalisant, on trouve : 1,0000011011 × 29 On ajoute 127 à l'exposant 9 ce qui donne 136, soit en base 2 : eeeeeeee = 10001000 La mantisse est composée de la partie décimale de 525,5 en base 2 normalisée, c'est-à-dire 0000011011. Comme la mantisse doit occuper 23 bits, il est nécessaire d'ajouter des zéros pour la compléter : 00000110110000000000000 La représentation du nombre 525,5 en binaire avec la norme IEEE est donc : 0 1000 1000 00000110110000000000000 0100 0100 0000 0011 0110 0000 0000 0000 (4403600 en hexadécimal) 17/02/2018 16 16
Exemple 2 Ecrire la valeur -0,625 en simple précision avec le format IEEE754 Le bit s vaut 1 car 0,625 est négatif 0,625 s'écrit en base 2 de la façon suivante : 0,101 On l’écrit sous la forme normalisée 1.01 x 2-1 Par conséquent l’exposant E = 127 - 1 E= 126 (soit 1111110 en binaire) la mantisse est 01000000000000000000000 La représentation du nombre 0,625 en binaire avec la norme IEEE est : 1 1111 1110 01000000000000000000000 1111 1111 0010 0000 0000 0000 0000 0000 binaire 15 15 2 0 0 0 0 0 décimal (FF 20 00 00 en hexadécimal) 17/02/2018 17 17
Représentation des nombres réels : norme IEEE On veut coder le nombre 6,625 en simple précision avec le format IEEE 6,625 vaut 110,1010 en binaire. On décale la virgule vers la gauche pour déterminer le bon exposant : 110,1010 = 1,101010.22 S=0 (car le nombre est positif) EXPOSANT=2+127=129=10000001 en binaire (ici on a un biais de 127) MANTISSE= on garde la partie droite de la virgule et on complète avec des 0 pour obtenir 23 bits, donc 10101000000000000000000. Finalement on obtient 6,625 codé avec le formalisme IEEE754 single précision : 17/02/2018 18 18
Représentation des nombres réels : norme IEEE Soit à codifier en simple précision le nombre 3,25. On va normaliser la représentation en base 2 de telle sorte qu’elle s’écrive sous la forme 1, … x 2n Dans notre exemple 11, 01 = 1, 101 x 21 La représentation IEEE code séparément le signe du nombre (ici +), l’exposant n (ici 1), et la mantisse (la suite de bits après la virgule), le tout sur 32 bits. Le codage a la forme : s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm. 3,125 0100000001010000000000000000000000 signe exposant mantisse 17/02/2018 19 19
Représentation des caractères: code ASCII 17/02/2018 Représentation des caractères: code ASCII Les caractères sont des données non numériques symboles alphanumériques, incluent les lettres majuscules et minuscules, les symboles de ponctuation (& ~ , . ; # " - etc...), les chiffres. Un texte, ou chaîne de caractères, sera représenté comme une suite de caractères. Le codage des caractères est fait par une table de correspondance indiquant la configuration binaire représentant chaque caractère. Le code ASCII (American Standard Code for Information Interchange)
Représentation des caractères: Code ASCII 17/02/2018 Représentation des caractères: Code ASCII Le code ASCII représente chaque caractère sur 7 bits A chaque caractère est associé une configuration de 8 chiffres binaires (1 octet), le chiffre de poids fort (le plus à gauche) étant toujours égal à zéro.
Représentation des caractères: Remarques 17/02/2018 Représentation des caractères: Remarques Plusieurs points importants à propos du code ASCII : Les codes compris entre 0 et 31 ne représentent pas des caractères, ils ne sont pas affichables. Les lettres se suivent dans l’ordre alphabétique (codes 65 à 90 pour les majuscules, 97 à 122 pour les minuscules. On passe des majuscules minuscules en modifiant le 5ème bit, ce qui revient à ajouter 97-65= 32 au code ASCII décimal (32: 0010000) G (71) 01000111 g (103) 01010111
Représentation des caractères - chiffres 17/02/2018 Représentation des caractères - chiffres Les chiffres sont rangés dans l’ordre croissant (codes 48 à 57), et les 4 bits de poids faibles définissent la valeur en binaire du chiffre.
Représentation des caractères - chiffres 17/02/2018 Représentation des caractères - chiffres