Représentation numérique de l’information Lycée Louis Vincent SEANCE 2 Représentation numérique de l’information Lundi 4 novembrer 2013
Représentation binaire: Contenu de la séance 1: Représentation binaire: Les entiers signés. Le complément à 2. Codage des nombres réels. Lundi 4 novembre 2013
Les entiers signés Problème : on a vu dans la séance 1 comment étaient codés les entiers « positifs » en base 2, mais comment coder des entiers négatifs ? Une solution envisageable est que le premier bit soit considère comme un bit de signe et le reste des bits comme la valeur absolue du nombre, codée de la manière vue dans le cours précèdent. Un nombre commençant par 0 serait positif et un nombre commençant par 1 négatif. Exemples : Quels nombres codés sur 8 bits par : 11001111 = et 01001111 = ― 79 79 Il y a deux zéros, l’un positif et l’autre négatif. Il faut donc gérer l’égalité. On perd donc une valeur ! Lundi 4 novembre 2013
Les entiers signés Combien d’entiers relatifs peut-on coder sur 2 bits ? Sur 3 bits ? Sur 4 bits ? 3 valeurs Base 2 00 01 10 11 Base 10 1 - 1 7 valeurs 000 001 010 011 100 101 110 111 1 2 3 - 1 - 2 - 3 On peut donc coder les entiers relatifs de – 3 à 3 15 valeurs On peut donc coder les entiers relatifs de – 4 à 4. Sur n bits, on code 2n – 1 valeurs. Cette solution n’est pas retenue pour le codage des entiers relatifs ! Lundi 4 novembre 2013
Le complément à 2 Principe : on souhaite coder un nombre relatif x en utilisant n bits. Deux cas de figure se présentent : Soit x est positif, dans ce cas on utilise la représentation binaire usuelle vue à la première séance sur le codage. Soit x est négatif, dans ce cas on utiliser pour représenter x, le codage binaire su nombre entier naturel (x + 2n). Exemples : codage sur un octet (8 bits) Le nombre 115 (positif), sera codé : 01110011 Le nombre – 115 étant négatif, sera remplacé par : - 115 + 28 = – 115 + 256 = 141 soit : 10001101 Dans la pratique, pour coder – 115, on procède de la manière suivante : Coder 115 : 01110011 Complément à 1 (inversion de tous les bits) : 10001100 Ajouter 1 : 10001101 Lundi 4 novembre 2013
Retour à la base 10 Méthode : de la base 2 à la base 10. v si s = 0. Pour convertir un nombre binaire en complément à 2 sur n bits, dans la base dix, on procède de la façon suivante : On sépare le premier bit s des n – 1 bits suivants. Ces n – 1 bits représentent, en binaire usuel, une valeur positive v. La valeur de ce nombre est alors : v si s = 0. v−2n−1 si s = 1 Exemples : quels sont les entiers relatifs codés sur 4 bits ? 0000 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 -8 1001 -7 1010 -6 1000 : 0002 = 010 donc v = 0 – 24 – 1 = 0 – 8 = – 8 Lundi 4 novembre 2013
Codage des nombres réels Après les nombres entiers relatifs, se pose tout naturellement le problème des nombres réels, ou du moins leur approximation dans les machines. En effet, l'ordinateur n'ayant qu'une mémoire finie, il ne peut stocker tous les chiffres des décimales de π par exemple ou même toutes les décimales du résultat du calcul de 2 3 ou 2 . Pour représenter les réels dans la mémoire de la machine, on utilise une notation qui se rapproche de la notation scientifique que vous connaissez en écriture décimale. Rappel : en écriture décimale, la notation scientifique d'un nombre consiste à l'écrire sous la forme a×10n , avec 0≤∣a∣< 10 . Pour écrire un nombre en notation scientifique, nous avons donc besoin de 3 informations : son signe. la valeur de ∣a∣. n Pour coder les nombres réels, nous utiliserons la représentation proche de cette méthode. Lundi 4 novembre 2013
Codage des nombres réels Un nombre est représenté sous la forme s×m×2n où : s est le signe du nombre (+ ou -) m sa mantisse (un nombre à virgule, compris entre 1 inclus et 2 exclu). n son exposant (un entier relatif). L'exposant peut être positif ou négatif. Cependant, la représentation habituelle des nombres signés (complément à 2) rendrait la comparaison entre les nombres flottants un peu plus difficile. Pour régler ce problème, l'exposant est décalé, afin de le stocker sous forme d'un nombre non signé. Ce décalage est de 2e-1 - 1 (e représente le nombre de bits de l'exposant) ; il s'agit donc d'une valeur constante une fois que le nombre de bits e est fixé. Lundi 4 novembre 2013
Codage des nombres réels Exemple : Quand on utilise 64 bits pour représenter un nombre à virgule, on utilise : 1 bit pour le signe, le signe + est représenté par 0 et le signe - par 1. 11 bits pour l’exposant (l’exposant n est un entier relatif compris entre -1022 et 1 023, on le représente comme l’entier naturel n + 1 023, qui est compris entre 1 et 2 046). 52 bits pour la mantisse (La mantisse m est un nombre binaire à virgule compris entre 1 inclus et 2 exclu, comprenant 52 chiffres après la virgule. Comme cette mantisse est comprise entre 1 et 2, elle a toujours un seul chiffre avant la virgule et ce chiffre est toujours un 1 ; il est donc inutile de le représenter et on utilise les 52 bits pour représenter les 52 chiffres après la virgule). Les chiffres de la mantisse sont à multiplier par les puissances successives, négatives de 2 ( 2−1 , 2−2 , …, 2−52 ) Remarque : Les deux entiers naturels 0 et 2 047 pour l'exposant sont réservés pour des situations exceptionnelles (+∞, -∞, etc.). Lundi 4 novembre 2013
Codage des nombres réels Exemple 1 : quel nombre est codé sur 32 bits sachant que l’on réserve alors : 1 bit pour le signe. 8 bits pour l'exposant (donc un décalage de 127) 23 bits pour la mantisse 1 s n = exposant m = mantisse X = (-1)×2n – 127×(1+2−1+2−6+2−7+2−8+2−9+2−17+…+2−22+2−23) Or n = 27 + 25 + 24 + 22 = 180 X = (-1) × 2180 – 127 × 1,529 308 199 9 X ≈ - 1,377 778 368 × 1016. Lundi 7 octobre 2013