CHAPITRE 1 CODAGE ET REPRÉSENTATION DES DONNÉES 1.1 Le binaire Les ordinateurs et avant les calculateurs numériques ont été conçus autour des propriétés de la logique booléenne. La logique booléenne ou algèbre de Boole est une logique qui ne traite que des variables ne pouvant prendre que deux états (vrai/faux, /1, haut/bas, appuyé/relâché, éclairé/éteint). La logique booléenne comporte trois opérations élémentaires, ET, OU, NON. Il est possible uniquement avec les fonctions de la logique booléenne de réaliser toutes les opérations de calculs entre variables binaires, ainsi l addition : Pour une addition de deux variables binaire a et b on pose : R a + b =R S avec S, la somme et R la retenue. a et b ne peuvent prendre que les deux valeurs binaires et 1, on peut donc poser les quatre opérations suivantes : + = 1 + = 1 + 1 = 1 1 1 + 1 = 1 Le circuit électrique ci-dessous réalise l addition de deux variables a et b binaires, les deux variables S et R représentent la somme et la retenue. Si on associe la valeur binaire 1àl action bouton appuyé et à l action bouton relâché, on constate que les voyants S et R vont s allumer (valeur binaire 1) ou s éteindre (valeur binaire ). Ce schéma réalise un additionneur 1 bit, pour réaliser la même opération sur un nombre plus grand, il faudrait concevoir un schéma bien plus complexe, mais il est bien évident que ce circuit n est qu un modèle élémentaire d opérateur addition qui n est pas du tout représentatif des circuits internes d un microprocesseur. Les fonctions logiques d un microprocesseur sont réalisées à base de transistor et gravées directement sur le silicium. 35
36 1 Codage et représentation des données 1.1.1 Pour aller plus loin Quelques liens http://www.pise.info/algo/codage.htm http://fr.wikipedia.org/wiki/george_boole http://fr.wikipedia.org/wiki/alg%c3%a8bre_de_boole_(logique) On vient de le voir, un calculateur ne peut traiter que des valeurs binaires (vrai/faux, /1). Nous allons voir comment représenter les différentes informations (nombre entiers naturels ou relatif, réels, lettres, mots, son,...). 1.2 La base 2 Commençons par une vidéo : la numération des shadoks http://www.youtube.com/watch?v=m_sigfqfkbw Les shadoks utilisent la base 4 avec les 4 symboles Ga (), Bu (1), Zo (2), Meu (3), nous utilisons naturellement la base 1 mais aussi le système sexagésimal (base 6) pour la mesure du temps. Pour le système de numérotation Shadoks comme pour le notre le principe d écriture des nombres est la numération positionnelle, dans lequel c est la position du symbole graphique qui donne sa valeur, ce système se différencie de la numérotation additive dans lequel c est la forme du symbole qui donne sa valeur (numérotation egyptienne http://fr.wikipedia.org/wiki/num%c3%a9ration_%c3%a9gyptienne). 1.2.1 Principe de la numérotation positionnelle Soit un nombre en base 1 : 123456. Ce nombre ce lit en tenant compte de la base et de la position (figure 1.1). Chaque chiffre du nombre associé à son rang ( de à n-1) permet d obtenir le poids correspondant dans le nombre, ainsi le chiffre 4 de rang 2 a une valeur de 4 1 2 = 4 dans le nombre total. rang 5 4 3 2 1 1 2 3 4 5 6 1 6 1 = 6 1 1 5 1 1 = 5 1 2 4 1 2 = 4 1 3 3 1 3 = 3 1 4 2 1 4 = 2 1 5 1 1 5 = 1 + 123456 FIGURE 1.1 Principe de la numération de position en base 1
1.2 La base 2 37 1.2.2 Transcodage base n vers base 1 À partir de cette description, il possible de convertir un nombre écrit dans une base n dans la base 1. La figure 1.2 décrit le principe du passage de la base Shadok (base 4) à la base 1. rang 5 4 3 2 1 Bu Ga Zo Meu Ga Bu 4 Bu 4 = 1 4 = 1 4 1 Ga 4 1 = 4 1 = 4 2 Meu 4 2 = 3 4 2 = 48 4 3 Zo 4 3 = 2 4 3 = 128 4 4 Ga 4 4 = 4 4 = 4 5 Bu 4 5 = 1 4 5 = 124 + 121 FIGURE 1.2 Transcodade base 4 (Shadok) base 1 Cette méthode permet bien sûr de passer de la base 2 à la base 1 (figure 1.3). rang 5 4 3 2 1 poids 1 1 1 2 2 = 1 = 2 1 1 2 1 = 1 2 = 2 2 2 1 2 2 = 1 4 = 4 2 3 2 3 = 8 = 2 4 2 4 = 16 = 2 5 1 2 5 = 1 32 = 32 + 38 FIGURE 1.3 Transcodage base 2 base 1 L algorithme 1 décrit en pseudo code le principe de la conversion de la base 4 à la base 1. Cet
38 1 Codage et représentation des données algorithme ne traite pas le cas des bases supérieures à 1. Algorithme : delabase4àlabase 1 Données : N4 : nombre entier en base 4 Résultat : N1 : nombre entier en base 1 début N1 nbcar Nb de caractères de N4 pour i nbcar parpasde1faire num i eme caractère de N4 à partir de la droite N1 N1 + num 4 i 1 fin Afficher N1 fin Algorithme 1 : Delabase4àlabase 1 Exercice 15- Transcodage base N base 1 Corrigé page?? Convertir en base dix les nombres ci-dessous : 1235 (8) 1111 (2) ABCD (16) 432 (4) Exercice 16- Algorithme base 2 vers base 1 Corrigé page?? Écrire l algorithme pour passer de la base 2 à la base 1 1.2.3 Transcodage base 1 vers base n Pour passer de la base 1 vers la base 2 il suffit de réaliser des divisions euclidiennes (division entière) successives du nombre à convertir puis du quotient de cette division jusqu à ce que le quotiient soit nul. Le nombre binaire se lit alors du dernier reste vers le premier (figure 1.6). 121 2 1 6 2 3 2 15 2 1 7 2 1 3 2 1 1 2 1 121 (1) = 11111 (2) FIGURE 1.4 Transcodade base 1 base2
1.2 La base 2 39 Cette procédure permet de convertir un nombre écrit en base 1 dans n importe quelle base, il suffit pour cela de diviser par le nombre de base (figure 1.5). 1214 8 6 151 8 7 18 8 2 2 8 2 1214 (1) = 2276 (8) FIGURE 1.5 Transcodade base 1 base 8 Si on souhaite utiliser une base supérieure à 1, il est nécessaire d utiliser de nouveaux symboles pour décrire les chiffres supérieurs à 9, par convention, on utilise les lettres de l alphabet, 1 A, 11 B, 12 C,... Exercice 17- Transcodage base 1 base N Corrigé page?? Convertir les nombres ci-dessous dans les bases 2, 8, 16 : 1235 (1) 1111 (1) 432 (1) Exercice 18- Algorithme de changement de la base 1 base N>1 Corrigé page?? Concevoir un algorithme permettant de convertir un nombre écrit en base 1 vers une base supérieure à 1
4 1 Codage et représentation des données 1.2.4 Base 2 - Code binaire naturel Les techniques des quatre opérations de base (addition, soustraction, multiplication et division) restent exactement les mêmes qu en notation décimale, elles sont juste simplifiées de façon drastique parce qu il n y a que deux chiffres (zéro et un). Pour la multiplication par exemple, quelle que soit la base, la multiplication par 1 (soit 2, c est-à-dire par la base elle-même) se fait en ajoutant un zéro à droite. Seules changent d une part la forme de la suite de chiffres qui exprime le résultat (elle ne compte que des zéros et un), d autre part la signification de cette suite (1 signifie «deux» et non «dix», 1 signifie «quatre» et non «cent», etc.). Le codage des différents types de nombres (Entiers, relatif, réels) a été vu en informatique. 1.3 La base 16 - Hexadécimal Le système hexadécimal (la base 16) est très souvent utilisé en informatique car il permet une représentation rapide et courte des nombres binaires. En effet, on peut en regroupant les bits du nombre en base 2 par 4 en partant de la gauche et en complétant par desàdroite si nécessaire pour avoir un multiple de 4 bits, obtenir directement le code hexadécimal en remplaçant chaque groupe de 4 bits par le code hexadécimal correspondant (tableau 1.1). base 1 1 2 3 4 5 6 7 8 9 1 11 12 13 14 15 2 1 1 11 1 11 11 111 1 11 11 111 11 111 111 1111 16 1 2 3 4 5 6 7 8 9 A B C D E F TABLE 1.1 Tableau de conversion base 1, base 2, base 16 133 (1) = 1 11 (2) = 85 (16) 1214 (1) = 1 111 111 (2) = 4BE (16) FIGURE 1.6 Transcodade base 2 base 16 1.3.1 Pour aller plus loin On pourra lire les différents chapitre de wikipédia sur la numération et le codage : numération egyptienne http://fr.wikipedia.org/wiki/num%c3%a9ration_%c3%a9gyptienne numération maya 1.4 Autres codages D autres codages ont été imaginés pour répondre à des besoin spécifiques
1.4 Autres codages 41 1.4.1 Code Gray Le code Gray est un code binaire qui possède comme particularité de n avoir qu un bit qui change entre deux valeurs entières successives. Ce code permet entre de réaliser des codeurs de position absolu sans aléas de commutation. FIGURE 1.7 Codeur absolu Avec ce type de capteur, la position est connue de manière absolue, en cas de coupure de courant, lors du redémarrage, la lecture de la position sur le capteur donne la position. Ce type de capteur se différencie des codeur relatifs ou incrémentaux, pour lesquels, la position est connue uniquement par comptage des impulsions par rapport à une position de référence (origine). Pour obtenir le code Gray, il faut faire toutes les 2 1,2 2,2 3... lignes, une symétrie en commençant par le bit de droite et changer la valeur du bit de gauche. Décimal Binaire pur Binaire réfléchi 1 1 1 2 1 1 1 3 1 1 1 4 1 1 1 5 1 1 1 1 1 6 1 1 1 1 7 1 1 1 1 8 1 1 1 9 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 12 1 1 1 1 13 1 1 1 1 1 14 1 1 1 1 1 15 1 1 1 1 1 TABLE 1.2 Code binaire naturel et code Gray
42 1 Codage et représentation des données 1.4.2 Code BCD Travailler sur des nombres en binaire naturel est intéressant dans les calculateurs, car ces nombres sont pondérés, mais lorsqu on veut une image rapide de l équivalent décimal, on est amené à effectuer un transcodage long et fastidieux. Il est plus commode dans certaines applications, comme par exemple l affichage en décimal du contenu de compteurs, d utiliser la représentation BCD. Le BCD (Binary Coded Decimal, ou Décimal Codé en Binaire en français) est le code décimal le plus utilisé en électronique. Il contient des mots-code qui sont la traduction en binaire naturel (sur 4 bits) de chacun des dix chiffres du système décimal. Chaque élément binaire d un mot-code a un poids comme en binaire naturel : 8 4 2 1. Le BCD est donc un code pondéré. Pour retrouver un chiffre décimal à partir de son mot-code en BCD il suffit d effectuer une conversion binaire à décimal pour chacune des tétrades composant le code BCD. (a) décimal BCD 1 1 2 1 3 11 4 1 5 11 6 11 7 111 8 1 9 11 (b) 2 9 8 5 endécimal devient 1 11 1 11 en BCD TABLE 1.3 Tableau BCD Le code BCD n est pas un code optimal, il utilise 4 bits soit 2 4 = 16 combinaisons pour coder 1 valeurs. 1.4.3 Code p parmi n Les codes «p parmi n» correspondent à des codes pour lesquels n bits sont à 1 parmi n bits On distingues plusieurs codes «p parmi n», Le codes «2parmi5»,lesmots-code comprennent 5 bits dont 2 sont à 1 (et les 3 autres à ). Il existe plusieurs codes «2 parmi 5», et les plus utilisés sont le code«8421»etlecode«7421». Ces deux codes sont pondérés, la liste des poids figurant dans la dénomination du code. Les codes «2 parmi 5» font partie des codes spécialement conçus pour la transmission de l information et pour la détection des erreurs. En effet, si on reçoit un nombre codé en «2 parmi 5», pour détecter une éventuelle erreur dans ce nombre il suffit de compter le nombre de 1 logiques présents dans chacun des groupes de 5 bits. Si un groupe ne présente pas deux 1 logiques, on peut en déduire avec certitude qu il est erroné.
1.4 Autres codages 43 (a) 2 parmi 5 Décimal Code«2parmi5» Code«2parmi5» 8421 7421 11 11 1 11 11 2 11 11 3 11 11 4 11 11 5 11 11 6 11 11 7 11 11 8 11 11 9 11 11 TABLE 1.4 Tableau de conversion Décimal vers «p parmi n» Remarque : contrairement à d autres codes plus perfectionnés, les codes «2 parmi 5» permettent de détecter une erreur, mais ne permettent pas de la corriger. De plus, si lors de la transmission, 2 bits de valeurs différentes changent simultanément d état, aucune erreur ne pourra être détectée à l arrivée. Le code «3 parmi 5» est utilisé par la poste pour imprimer le code barre nécessaire aux lecteurs optiques Exercice 19- Codage de pièce - X-MP 21 Corrigé page?? Identification des pièces Le calculateur est équipé d un lecteur optique de codes à barres capable de lire le code 2/5 IN- TERLEAVED ("2 parmi 5 entrelacé") permettant d identifier automatiquement les pièces à souder. Chaque pièce est identifiée par un nombre de quatre chiffres décimaux C 3,C 2,C 1 et C. Le code 2/5 INTERLEAVED utilise 5 bits (2 valent 1 et 3 valent ) pour coder un chiffre décimal. Les chiffres de rang impair (C3 et C1) sont codés sur les barres noires, les chiffres de rang pair (C2 et C) sont codés sur les espaces entre les barres blanches. Les 1 sont codés par les barres ou espaces "larges" (utilisant deux largeurs de base), les sont codés par les barres ou espaces "étroits" (utilisant une largeur de base). Chaque chiffre de à 9 est codé sur 4 bits a, b, c et d de poids respectifs 1, 2, 4 et 7. Le code est complété par un bit de contrôle de parité e. Q1. Déterminer les codes des chiffres de 1 à 9 en présentant le résultat sous forme de tableau. En déduire le code du chiffre en justifiant son unicité. Déterminer le nombre correspondant au code de la figure ci-dessus. Le calculateur traduit chaque chiffre de ce code à barres en un nombre binaire codé sur les quatre bits s 3, s 2, s 1 et s (le poids du bit si vaut 2 i ).
44 1 Codage et représentation des données Q2. Établir la table de vérité des sorties s1 en fonction des entrées a, b, c, d et e. En déduire l équation simplifiée de la sortie s o. Poids 1 2 4 7 8 4 2 1 a b c d e s 3 s 2 s 1 s 1 2 3 4 5 6 7 8 9