Professional Documents
Culture Documents
1
Information et codages
Des chiffres et des lettres. Ou comment matrialiser linformation ? Vers une premire approche de linformation La matire premire sur laquelle travaille un ordinateur est linformation et il est donc ncessaire de donner celle-ci une reprsentation adapte. Le fonctionnement des ordinateurs actuels reposant entirement sur le systme binaire, il est alors naturel que la reprsentation de linformation se fasse galement sous la forme de donnes binaires. Les informations traites dans ce chapitre sont dites informations simples : il sagit essentiellement de nombres et de mots. Aprs avoir introduit le bit comme unit de mesure de linformation, la premire partie est consacre aux codages des nombres (entiers et rels) et des caractres (lettres dun alphabet). Les dispositifs de stockage (mmoires) et de transport de linformation (rseaux) sont dpendants de lenvironnement physique dans lequel ils oprent. ce titre, ils peuvent introduire des altrations et ainsi provoquer la restitution de donnes errones. La deuxime partie du chapitre traite des techniques de dtection et de correction de ces erreurs. Sur un autre plan, le stockage et la transmission de donnes gnrent des cots dpendant de la taille de ces donnes. En se servant de la redondance inhrente toute information relle, la dernire partie du chapitre donne un aperu sur les techniques de compactage des donnes.
support par des signaux sonores (tam-tam) ou lumineux (volutes de fume) pour devenir le message. Il ny a ainsi pas de manire unique doprer une reprsentation de linformation : on utilise le mode de reprsentation le plus appropri au contexte ou au traitement faire. Une donne est un modle de reprsentation dune information comme le portrait est un modle de reprsentation dun personnage : il y a autant de portraits possibles que de manires de voir le personnage, et ces portraits sont tous plus ou moins dles
positive ou nulle : il ny a pas danti-information Dun point de vue mathmatique, Q est dautant plus grande que la probabilit dune valeur x est faible et est nulle si la probabilit est gale 1 (ce qui est le cas dune constante). Q est construite comme une fonction, restant encore dnir, inverse de la probabilit : Q = f(1/p(x)) avec p(x) = 1 Q = 0 La loi de probabilit doit tre connue. En ralit, la dnition utilise ne sapplique quaux cas o toutes les valeurs sont quiprobables. Le calcul de la quantit dinformation est limit au cas dune loi de probabilit uniforme discrte. Ainsi, le calcul de la quantit dinformation de la variable associe au rsultat dun lancer de d na de sens que si celui-ci nest pas pip (ce qui se traduit par lhypothse de lquiprobabilit). Si n est le nombre de valeurs possibles alors p(x) est gale 1/n, soit p = 1/6 pour le d. Comment choisir la fonction f ? La dnition de la quantit dinformation est conue pour intgrer le fait quune variation de probabilit de 0,1 na pas le mme effet, du point de vue de linattendu, si lon passe dune probabilit de 0,8 0,9 ou dune probabilit de 0,1 0,2. Dans le premier cas, la probabilit ne change en relatif que de 10 %, alors que dans le second cas elle double la valeur. La fonction dnir nest donc pas linaire : elle doit tre plus sensible pour les valeurs faibles que pour les valeurs fortes. Ce type dvolution est habituellement bien pris en compte par la fonction logarithme. Dans ces conditions Q sexprime sous la forme : Q = logb (1/p(x)) o b est la base du logarithme. Cette fonction tant notre appareil de mesure de la quantit dinformation, il est maintenant ncessaire de ltalonner, cest--dire de dnir son unit de mesure. Avec la technologie actuelle de linformatique, linformation est reprsente laide de variables binaires (0 ou 1) quil est facile de caler sur des phnomnes physiques (un courant qui passe ou ne passe pas, une orientation nord-sud dun aimant). Ltalonnage est fait par rapport ce systme binaire. Par dnition, le bit (binary digit) est lunit dinformation apporte par une variable binaire dont les deux valeurs sont quiprobables. Daprs cette dnition, on a : Q = logb (1/p(x)) = 1 bit et comme p(x) = 1/2, il sen suit que b = 2. La formulation nale de la quantit dinformation donne par Claude Shannon est ainsi : Q = log2 (1/p(x)) bits Le bit est lunit de mesure de la quantit dinformation dans un systme binaire. Il faut faire la distinction entre le contenant et le contenu. Le contenant est llment de mmoire capable de stocker de linformation. La technologie actuelle de mmorisation, aussi bien pour la mmoire centrale semi-conducteurs, que pour les units de disques magntiques ou encore les CD-Rom optiques, est entirement base sur le systme binaire : le plus petit lment mmorisable correspond un 0 ou un 1, cest--dire une mmoire deux tats. Le plus petit contenant dinformation vaut 1 bit (log2 (1/0.5)).
Une mmoire de un bit a deux tats possibles, une mmoire de deux bits a quatre tats et ainsi de suite (2n tats pour n bits). Il est noter, qualors que la quantit dinformation dune variable (le contenu) peut prendre nimporte quelle valeur (un nombre rel comme dans le cas du d), la mmoire (le contenant) est forcment exprime en nombre entier de bits. Pour la mmorisation dune information, il faut donc disposer dune mmoire avec assez de bits pour que le nombre de ses tats soit suprieur au nombre de valeurs possibles de la variable alatoire associe cette information. Cette rgle est illustre avec lexemple du d (gure 1-1).
Figure 1-1
D
0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1
Mmoires
0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1
Les valeurs possibles tant au nombre de 6, la quantit dinformation Q de la variable associe au rsultat dun jet de d est gale log2 (6), soit Q = 2,58 bits. Il faut une mmoire de 3 bits donc 8 tats pour stocker le rsultat dun jet. Huit congurations sont donc disposition pour mmoriser les 6 valeurs. La rgle de codage utilise pour la mmorisation correspond ici lutilisation des 6 premiers nombres entiers pour reprsenter les 6 symboles chiffres inscrits sur le d. Cela revient laisser inutilises les deux congurations extrmes : le contenant vaut 3 bits et le contenu vaut 2,58 bits.
noter Si le d est jet 10 fois, on utilisera, pour des questions de commodit, une mmoire de 30 bits, alors quune mmoire de 26 bits serait sufsante (10 jets indpendants valent 10 2,58 soit 25,8 bits). Dans ce cas, il y a une perte de place, mais au prot de la commodit demploi.
Le mme raisonnement sapplique la quantit dinformation dun chiffre dcimal. Quelle est la quantit dinformation dun chiffre ? Il y a 10 chiffres que lon suppose quiprobables. Le calcul donne Q = log2 (10) 3,32 bits : il faut videmment 4 bits mmoire pour stocker un chiffre dcimal (il y a 16 congurations possibles mais 6 dentres elles ne sont pas utilises).
Un bit est rarement stock tout seul : gnralement la mmoire est structure sur la base dun groupe ordonn de 8 bits appel octet (byte en anglais) Un octet est une sorte de panier dans lequel chacun des 8 bits est dni par sa position ou son rang. Un octet permet de mmoriser une information 28 (256) valeurs possibles. Il sert couramment stocker les caractres dun texte (un caractre par octet) ou les nuances de gris dune image (une couleur par octet), voire mme des nombres si la prcision nest pas un critre retenu. La notion de quantit dinformation tant prcise, voyons maintenant les informations lmentaires qui feront lobjet dun codage : les nombres et les caractres. Commenons par les nombres, dabord les plus simples , les entiers, puis les rels.
Les nombres cardinaux ont des modes de reprsentation qui ont beaucoup vari au cours du temps en partant de simples encoches sur des btons, des empreintes sur des tablettes, des nuds dans des cordelettes pour arriver aux symboles styliss que constituent nos chiffres dits arabes . Un nombre est une entit abstraite, cest--dire une forme dinformation qui, dune manire ou dune autre, se doit dtre concrtise pour tre mmorise, traite ou communique. Le mme concept prend ainsi, en fonction du contexte dutilisation, des reprsentations diffrentes mais supposes quivalentes. Ainsi, 156, CLVI, cent cinquante-six et
(hiroglyphe) sont toutes des reprsentations du mme nombre. Ce nombre cardinal est appel nombre entier naturel. Les nombres ordinaux sont, de leur ct, gnralement construits partir des nombres cardinaux en les sufxant de ier ou ime. Mais lusage, la diffrence entre le cardinal et lordinal nest pas toujours bien faite dans toutes les langues. Ainsi, nous dirons le premier juin , mais le lendemain sera couramment dsign par le 2 juin . En informatique, le nombre ordinal est reprsent comme un nombre cardinal.
La reprsentation de tout nombre sappuie sur un alphabet rduit de symboles, les chiffres de 0 9, et la position dun chiffre dans cette reprsentation indique son poids en puissance de 10 (units, dizaines, centaines, etc.). Le cardinal de lalphabet, soit 10, est appel base de la reprsentation. Le nombre quatre mille trois cent vingt sept devrait de fait scrire sous la forme 4 1 000 + 3 100 + 2 10 + 7, cest--dire : 4 103 + 3 102 + 2 101 + 7 100, mais se rduit 4 327 en NPZ. Par contre, toute position doit comporter un chiffre : si un poids, par exemple la centaine, nest pas prsent dans le nombre, il faut faire apparatre la nullit de ce poids en mettant le chiffre 0 au rang des centaines.
tymologie du mot chiffre Le mot franais chiffre vient de larabe sifr qui exprime lide de vide pour nommer le zro. Quant au mot zro, il vient de zero en italien qui serait une contraction de zero, avec l encore la mme racine arabe.
La reprsentation dcimale dun nombre N est la suite ordonne de chiffres { a p a p 1 a 1 a 0 } 0 a i < 10 qui est une reprsentation implicite dun dveloppement du type : N = a p 10 p + a p 1 10 p 1 + + a 0 10 0 Par exemple, pour le nombre 147 on obtient : a 0 = 7 , a 1 = 4 , a 2 = 1 . On notera que dans cet exemple, on part dj du rsultat connu puisque lon crit 147
La reprsentation a galement la caractristique dtre longueur variable, cest--dire que nous utilisons autant de chiffres que ncessaire : peu de chiffres pour un petit nombre, davantage pour un grand nombre, mais toujours en nombre sufsant. En dautres termes, il nous est possible davoir une prcision quasi innie.
Les bases
En arithmtique, tout nombre peut tre reprsent dans nimporte quelle base sous forme de somme des puissances de la base retenue. Ainsi pour une base S donne, on a : N = a p S p + a p 1 S p 1 + + a0 S 0 0 ai < S N =
p
ai S i
i=0
Les bases usuelles sont : 2, 8, 10 et la base 16. chaque base correspond un alphabet avec autant de symboles.
2 8 10 16 01 01234567 0123456789 0123456789ABCDEF en dcimal en hexadcimal en octal en binaire 9 + 1 = 1010 F + 1 = 1016 7 + 1 = 108 1 + 1 = 102
Dans le cas dune base de valeur infrieure 10, les chiffres de la base 10 sont repris dans lordre et en quantit sufsante. Par contre, pour la base 16, les 10 chiffres sont complts avec les six premires lettres de notre alphabet, de A F, en majuscules ou minuscules (gure 1-2).
Figure 1-2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
0 1 2 3 4 5 6 7 8 9 A B C D E F
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111
20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
Le changement de base
Mathmatiquement toutes les bases sont quivalentes et les changements de base sont parfaitement valides. Le changement de base le plus frquent, en informatique, est le passage de la base 10 vers la base 2 (et rciproquement). Lalgorithme de changement de base, pour une base S cible donne, consiste extraire itrativement les coefcients bi de la nouvelle base S en prenant le reste de la division du nombre N par S. Le processus est ritr sur le quotient rsultant jusqu lobtention dun quotient nul. N est exprim dans sa base dorigine, la division est faite dans la base dorigine et le reste est reprsent dans la base de destination. Ainsi, le reste de la division de N par S donne lunit b0, le reste de la division du quotient obtenu par S donne llment de rang 1 b1 et ainsi de suite Lalgorithme est valable pour tout changement de base : il suft de faire les divisions dans la base de dpart (il faudra cependant rapprendre faire les divisions dans cette base). Dans le cas dune conversion de base 10 vers une base 2, nous obtenons par exemple : 2610 = ?2 26 10/2 = 13 10 13 10/2 = 610 610/2 310/2 do : 2610 = 110102 110/2 = 310 = 110 = 010 reste = 02 reste = 12 reste = 02 reste = 12 reste = 12
Reprsentation machine
En machine, sauf cas particuliers, la reprsentation des nombres est faite avec un nombre xe de symboles binaires (donc de bits). Lensemble des symboles utiliss dans un codage constitue un alphabet (0 et 1 dans le cas binaire). Un assemblage de symboles constitue un mot du code ou codet. La liste des mots de code autoriss constitue le code. Dans nos langues naturelles, les mots ont une longueur variable. Lvolution normale dune langue vivante a tendance faire bouger cette longueur. Lorsquun mot apparat pour la premire fois, il est souvent long car construit comme une priphrase.
10
Loi de Zipf Cette constatation est mettre en parallle avec la loi de Zipf. Dans les annes 1930, Georges K. Zipf observe quen classant les mots dun texte, quelle que soit sa langue, par frquence dutilisation dcroissante, cette frquence est inversement proportionnelle son rang. Par exemple si le mot le plus frquent apparat 100 fois, de deuxime mot le plus frquent apparat 50 fois, etc. Prenons lexemple du mot automobile. Au fur et mesure du plus grand usage du mot, lefcacit tend le raccourcir, par exemple en auto. Les mots les plus frquents vont donc naturellement raccourcir et les mots utiliss plus rarement auront tendance rester long. Il en est de mme pour chemin de fer mtropolitain devenu mtro, machine laver le linge devenu lave-linge. Les sigles (SNCF) rentrent galement dans ce cadre.
Pour la machine lintelligence trs rudimentaire quest lordinateur, lefcacit sobtient par la standardisation et la rgularit dans les traitements. Un ordinateur travaille mieux sur des mots de longueur (taille) xe. Cette taille a eu du mal se ger, au cours du temps, sur une valeur bien dtermine, mais actuellement elle est cale sur des multiples de loctet : les mots sont de 8, 16, ou 32 bits et maintenant 64 bits. On parle alors de processeur 8 bits, 32 bits ou 64 bits. Il existe aussi des processeurs simples 4 bits. Le mot bit a ici bien sr le sens du contenant. La consquence dune taille xe en nombre de bits du mot est quun mot de ce code ne peut reprsenter quun nombre ni dentiers positifs. Cette limitation a un certain nombre de consquences, non seulement sur ltendue des entiers reprsentables, mais aussi sur les calculs intermdiaires. Pour illustrer le propos, prenons une calculette dcimale afchage de 3 chiffres. Les nombres reprsentables sont donc les entiers positifs N avec 0 N 999. La limitation impose aussi que le rsultat nal dune opration, ou un calcul intermdiaire, ne sorte pas de cette limite. Sil est possible de calculer 105 15, le rsultat de 15 105 sera faux car il ny a pas de place pour mettre le signe. De plus, les axiomes dassociativit et de commutativit de laddition ne sont plus forcment vris. Par exemple : 700 + (400 300) (700 + 400) 300. Dans le premier cas, le rsultat est juste, dans le second il est faux car il donne lieu un dbordement (700 + 400) au niveau du calcul intermdiaire.
11
Un processeur travaille gnralement avec une longueur de mot xe, mais en fonction de ltendue des entiers naturels sur lesquels on veut travailler, il existe des artices pour travailler avec des mots plus longs. Les langages de programmation de haut niveau (C, Java, Fortran) permettent cette adaptation, indpendamment du type de processeur, en introduisant les types de variables avec diffrentes longueurs (entier court, long).
0001 1010 + 1001 1010 = 1011 0000 ce qui vaut 52 dans ce codage et non 0 !
12
On ne peut donc pas appliquer les rgles de laddition binaire ce type de reprsentation. Le codage avec bit de signe est simple, mais ce nest pas celui qui rend le plus efcace le calcul en machine.
Le codage en complment 2
Le principe du codage dit en complment 2 consiste ramener le cas des nombres ngatifs un nombre positif et rendre applicable directement le codage, maintenant connu, des entiers naturels. Pour un code sur n bits, la rgle de codage est : Si le nombre q coder est positif, on prend son code en base 2 classique. Si le nombre q est ngatif, on prend le code en base 2 classique de : q + 2n. Les nombres reprsentables sont ceux compris entre 2n1 et 2n1 1. Lappellation complment 2 est abusive : de fait, il faudrait dire complment 2 puissance n . Par exemple, si la reprsentation est faite sur 8 bits, alors il sagit du complment 256. Ainsi le codage de 26 donne, en complment 2, la valeur 26 + 256, cest--dire 230. Lentier ngatif 26 est cod dans cette technique comme sil sagissait de lentier positif 230. Le plus grand entier positif reprsentable est 281 1, soit 127. Tous les codes valeur entre 128 et 255 reprsentent donc des entiers ngatifs. La dcomposition en puissance de 2 de 230 donne 1110 0110. Do 2610 = 1110 0110 en complment deux. Notons que, cette fois-ci, si lon ajoute 26 26 le rsultat obtenu est bien celui attendu avec les rgles de laddition binaire.
1 1 1 1 1 1 (retenues)
0001 1010 + 1110 0110 = 0000 0000 ce qui vaut 0 dans ce code. Il faut aussi remarquer que la retenue nale ( gauche) est perdue : il ny a pas de bit pour la reprsenter.
Reprsentations particulires et valeurs limites
Il rsulte de cette mthode de codage que, pour les nombres ngatifs, le bit de poids fort est toujours 1 (mais ne pas confondre avec un bit de signe positionn indpendamment du codage de la valeur absolue). Le zro na quune seule reprsentation : 0000 0000 et 1 est cod par 1111 1111. Lintervalle de reprsentation nest pas symtrique : sur 8 bits, il va de 128 (10000000) + 127 (01111111). Il faut bien faire attention aux effets de bords : maximum + 1 = minimum !!! (127 + 1 = 128)
13
Nous venons de dcrire le principe du codage, voyons maintenant la technique utilise pour le raliser. En fait, plutt que de procder par ajout de la puissance de 2, il existe un moyen trs simple de calculer le complment 2 dun nombre. Il sagit du passage par le complment 1 auquel on ajoute ensuite la valeur 1. La rgle est la suivante : Si le nombre est positif et infrieur 2n 1 1, il est cod comme un entier naturel (dcomposition en puissance de 2). Si le nombre est ngatif et suprieur 2n 1, alors : On code la valeur absolue du nombre comme un entier naturel (dcomposition en puissance de 2). On prend le complment 1 de ce codage : cela revient inverser tous les bits de la reprsentation (le complment 1 de 1 est 0, le complment 1 de 0 est 1). On ajoute 1 au rsultat obtenu (addition binaire). Exemple : codage de 26 : 26 = + soit 0001 1010 est le codage de la valeur absolue de 26. 1110 0101 est le complment 1 (inversion de chacun des bits). 1 est lajout de 1 au rsultat obtenu (addition binaire). 1110 0110 ce qui est bien la valeur code de 26 trouve prcdemment.
La transposition au systme binaire est immdiate : le complment 10 devient le complment 2 et le complment 9 devient celui 1. La particularit rside dans le fait que ce complment 1 est trivial obtenir, il suft dinverser le bit. titre dexemple, lopration prcdente peut tre revue en binaire avec lutilisation du complment 2 sur 10 bits. A = 71310 = 10 1100 10012 B = 41810 = 01 1010 00102 B1* = 10 0101 1101, est le complment 1 B2* = 10 0101 1110, est le complment 2 (= B1* + 1) AB: 10 1100 10012 + 10 0101 11102 = 01 0010 01112 : le bit de retenue gauche est perdu. Le rsultat correspond bien 295 en dcimal.
14
Un petit retour sur la soustraction dcimale Pour mieux comprendre les fondements de cet algorithme, il est bon de revenir notre systme dcimal et de revisiter quelque peu la soustraction. Dans le systme dcimal, les entiers naturels sont cods par les poids des puissances de 10 qui interviennent dans le nombre. Avant den venir la soustraction et les nombres ngatifs, revenons rapidement sur laddition. Celle-ci consiste sommer chacun des poids de mme rang des 2 nombres en partant de la droite (les units) et en effectuant des reports sur le poids suivant (suprieur) si ncessaire. Que faut-il connatre pour faire une addition lmentaire de 2 entiers naturels 1 chiffre ? Tout simplement la table daddition des nombres 1 chiffre. Pour introduire les nombres ngatifs, nous allons procder en deux temps en utilisant ce qui vient dtre appris pour laddition de deux entiers positifs. Pour ter une valeur un entier, on va soustraire un entier positif ce nombre. Comme on ne sait pas faire la soustraction, on va se ramener au cas connu de laddition. Soustraire un nombre positif revient additionner un nombre ngatif. Donc, si on sait faire la soustraction par lintermdiaire dune addition, on aura aussi rsolu la question de la reprsentation de lentier ngatif. Ainsi, pour retrancher B A il suft de lui ajouter un nombre sufsamment bien choisi. La technique utilise est celle du complment 10 (avec le mme abus de langage que pour le complment 2 : il faudrait dire complment la puissance de 10 ). Illustrons le propos avec le cas de la calculette 3 digits (chiffres dcimaux). Le complment 10 est alors le complment 103 cest--dire le complment 1000. Soit faire le calcul de C = A B avec A = 713 et B = 418. Pour retrancher B A on lui ajoute B10*, son complment 10. B10* = 103 B cest--dire (1000 418 = 582) do : C = A B = A + (103 B) 103 = A + B10* 1000 ( = 713 + 582 1000 = 1295 1000 = 295) Quel est lintrt de cette opration ? On vient de remplacer une soustraction de deux entiers quelconques par une addition et une soustraction particulire avec 1000 (le complment 10). Cest toujours une soustraction, mais elle est plus simple raliser car elle se fait par rapport une valeur xe. Le nouveau problme est : que faut-il ajouter 418 pour obtenir 1000, au lieu de la question : que faut-il ajouter 418 pour que le rsultat fasse 713 ? La connaissance de la table des additions un chiffre suft pour calculer le complment 10. Nous avons transform la soustraction en addition, mais il reste la quantit 103 (1000) quil faut retrancher : comme on ne dispose que de 3 chiffres sur notre calculette, il suft donc de lignorer. Plutt que de calculer directement le complment 10 (B10*), il est plus facile de le dnir par rapport au complment 9, B9* (soit 999), par B10* = B9* + 1. Or le complment 9 se calcule directement partir des tables apprises pour laddition : il suft pour un nombre 1 chiffre donn de connatre le nombre qui doit lui tre ajout pour que le rsultat soit gal 9. Cette opration est rpte pour tous les chiffres du nombre. Le complment 9 de 418 est dtermin par : 8 + 1 = 9 ; 1 + 8 = 9 ; 4 + 5 = 9. Ce qui donne B9* = 581, et nalement B10* = B9* + 1 = 581 + 1 = 582 et, pour laddition nale, nous obtenons : 713 + 582 = 1295. Pour retrancher 1000, il suft dignorer le quatrime chiffre. La soustraction devient laddition de loppos cod en complment 10. On peut donc partir sur cette base pour la reprsentation dun nombre entier ngatif : il suft de le coder sous la forme de complment 10.