Représentation numérique de l’information : les nombres à virgule Nous avons vu comment représenter en binaire les entiers naturels et les entiers relatifs. Se pose maintenant le problème de représenter les nombres à virgule. Cas général d’un nombre décimal Le nombre 11,11(2) correspond au nombre : 1×21 + 1×20 + 1×2-1 + 1×2-2 23 22 21 1 20 1, 2-1 1 2-2 1 2-3 2-4 = 2 +1 + 0,5 + 0,25 =3,75 Quels sont les nombres suivants ? (s’aider du tableau ci-dessus) : 1000,001(2) et 10,1111(2) Les nombres à virgule sont en général représentés en « notation scientifique » sous la forme s (-1) m 2 : n s est le signe, m la mantisse ( 1≤m<2) et n l’exposant. Dans la représentation des nombres avec 64 bits, on utilise 1 bit pour le signe, 11 bits pour l’exposant puis 52 bits pour la mantisse ( attention l’ordre n’est pas le même que pour l’expression précédente). Le signe + est représenté par un ……. et le signe - par un ……… Avec 11 bits pour l’exposant, on peut coder au maximum 2 11 = 2048 nombres. L’exposant n est un entier relatif compris entre -1022 et 1023 et on le représente par l’entier naturel n + 1023 qui est compris entre 1 et 2046. Les 2 entiers naturels 0 et 2047 sont réservés à des situations particulières ( +∞, −∞, … . ). La mantisse m représente un nombre compris entre 1 compris et 2 exclu. Puisque le chiffre avant la virgule est toujours 1, on a décidé de ne pas le représenter et de consacrer les 52 bits aux chiffres après la virgule. Exemple : Trouver le nombre à virgule représenté par le mot 1100010001101001001111000000000000000000000000000000000000000000 Le signe est représenté par 1. L’exposant est représenté par 10001000110. La mantisse e st représentée par 1001001111000011100000000000000000000000000000000000. Le signe du nombre est donc -. Le nombre 100 0100 0110 est égal à 1 094 et l’exposant du nombre est n = 1094 - 1023 = 71. Sa mantisse est : m = 1.1001 0011 1100 0011 1000 0000 0000 0000 0000 0000 0000 0000 0000 On rajoute un « 1 ». = 1 + 1/2 + 1/24 + 1/27 + 1/28 + 1/29 + 1/210 = 1,577… Le nombre représenté est donc - 1,577× 271 = - 3,724 × 1021 Exercice 1 : Convertir en base 2 le nombre 104,40625(10) Exercice 2 : Trouver le nombre à virgule représenté par le mot 0100000010111100000000000000000000000000000000000000000000000000 Exercice 2 : Comment pourrait-on représenter le nombre 7,0 sur 64 bits ? Comment pourrait-on représenter le nombre 10,75 sur 64 bits ?