Chapitre 4
Transcription
Chapitre 4
CHAPITRE 4 REPRÉSENTATION DE L’INFORMATION La plupart des systèmes, autant mécaniques qu'électroniques, ne peuvent prendre que deux états stables, que l’on note 0 et 1; ainsi, les circuits électroniques conduisent ou ne conduisent pas et les impulsions électriques sont présentes ou absentes. Le système de numération à deux symboles (0 et 1) ou système binaire est mieux adapté aux ordinateurs que le système décimal qui comporte dix symboles. En outre, chaque chiffre, lettre, mot, instruction ou élément graphique peut être codé dans le système binaire. Le système binaire est certes la représentation de l’information compréhensible par l’ordinateur, mais il est, dans certains cas, moins pratique. Le choix d’un système de représentation pour coder un ensemble de symboles doit satisfaire à deux critères importants. Premièrement, le codage de ces symboles doit être univoque : deux symboles différents doivent avoir deux représentations différentes. Deuxièmement, la représentation doit être la plus compacte possible afin d’occuper un minimum d’espace mémoire. Ces deux critères ont guidé le choix du standard ASCII et du code EBCDIC. Aujourd’hui, un nouveau standard de codage de caractères a vu le jour : le standard UNICODE; c’est un système ouvert, rassemblant, en un seul système, tous les symboles connus à ce jour, incluant les symboles des langues asiatiques. 4.1 Les bases de numération La numération dans un système de base N comprend exactement N chiffres allant de 0 à N – 1. La base décimale que nous connaissons tous comprend 10 chiffres (0 à 9). Lorsque la base N dépasse le nombre de chiffres (10), on se sert des lettres de l’alphabet; par exemple, la base de numération hexadécimale comprend les symboles suivants : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E et F. Bien entendu, A, B, C, D, E et F représentent les nombres décimaux 10, 11, 12, 13, 14 et 15 respectivement. La représentation polynomiale d’un nombre M dans une base de numération N est la suivante : où M = AkNk + Ak-1Nk-1 + … + A1N1 + A0 0 <= Ak < N De façon plus compacte, nous écrivons : M = (AkA k-1…A1A0)N 4.2 Le rang ou le poids Le rang d'un chiffre est sa position dans le nombre en partant de la droite. On parle de poids fort pour les chiffres situés vers la gauche et de poids faible pour les chiffres situés vers la droite. Le poids le plus fort est le chiffre le plus à gauche, alors que le poids le plus faible est le chiffre le plus à droite. © Télé-université, 2002 INF 1130 Comprendre l’ordinateur : organisation, exploitation et programmation CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION 4.3 2 La conversion Tout nombre M exprimé dans une base P peut être représenté dans une base N. Comment peut-on, par exemple, convertir le nombre 1253 exprimé en base 7 dans la base 13? Il n’existe pas de formule évidente permettant de résoudre cette conversion avec la représentation polynomiale. La démarche la plus naturelle, puisque la base 10 nous est familière, est de convertir le nombre 1253, de la base 7 à la base 10, puis de la base 10 à la base 13, par des divisions successives. En privilégiant cette approche, la représentation polynomiale ci-dessus peut être réécrite comme suit : M = A0 + N(A1 + N(A2 + N(….))) À partir de cette nouvelle relation, on devine que les coefficients Ak de la représentation de M dans la base N peuvent être déduits par l’algorithme suivant : Si M < N, alors M vaut M dans la base N Si M > N, alors Ak = partie entière [M/Nk-1 modulo N] k-1 Si (M \ N < N), alors k-1 Ak+1 = partie entière (M/N ) (i) (ii) La procédure prend fin. Sinon, répéter l’étape (i). Dans cet algorithme le symbole « \ » fait référence à la division entière. Par exemple, la division entière de 13 par 5 vaut 2. On se limite à la partie entière de la division de 13 par 5. Le reste de cette division est en fait le modulo de 13 par 5, soit 3. Exemple À l’aide de la représentation polynomiale, on exprime (1253)7 en base 10 comme suit : (1253)7 = (3*70) + (5*71) + (2*72) + (1*73) = 479, en base 10. Au moyen de l’algorithme, on déduit la représentation de 479 dans la base 13. A0 = 479 modulo 13 = 11, soit B en base 13 479 \ 13 = 36 > 13, on continue A1 = (479 \ 13) modulo 13 = 10, soit A en base 13 479 \ 169 = 2 < 13, alors A2 = 2 La représentation de (1253)7 est 2AB, en base 13. 4.3.1 Les principaux systèmes de numération Outre la numération décimale, on utilise souvent le système de numération à base 2 ou système binaire, le système à base 8 ou octal et le système à base 16 ou hexadécimal. Système binaire ou à base 2 Dans la numération binaire, les informations sont codées en utilisant un seul bit qui peut être 0 ou 1. Si l’on se réfère à l’algorithme ci-dessus, le nombre décimal 150 s’écrit en binaire (10010110)2. © Télé-université, 2002 INF 1130 Comprendre l’ordinateur : organisation, exploitation et programmation CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION 3 Système octal ou à base 8 Le système de numération octale utilise 8 symboles (0 à 7) pour représenter les informations. Le système octal est souvent utilisé comme représentation simple du système binaire. Le nombre décimal 150 s’écrit 226, dans la base 8; il suffit d’appliquer la méthode de conversion expliquée ci-dessus. Système hexadécimal ou à base 16 Les nombres binaires étant de plus en plus longs, il est apparu nécessaire d’utiliser un codage offrant plus de flexibilité. De là est née l’idée du codage en hexadécimal. En effet, pour bien comprendre les notions d’adresses de segments et de décalage (offset) dans l’organisation de la mémoire vive d’un ordinateur et leurs effets sur l’architecture d’un système, il est important de maîtriser la représentation des nombres en hexadécimal (HEXA). L’hexadécimal est un système de numération à base 16, comparable aux systèmes décimal (base 10) et binaire (base 2). Dans le système hexadécimal, on utilise les chiffres de 0 à 9 et 6 caractères (A à F) qui correspondent aux nombres décimaux de 10 à 15. Lorsqu’on lit un nombre du système décimal de droite à gauche, la valeur de chacune des positions s’accroît d’un facteur 10. En HEXA, la valeur de chaque position successive s’accroît d’un facteur 16. Base Binaire Nombre de bits pour le codage 1 Chiffres de la numération 0 et 1 Octale 3 0, 1, 2, 3, 4, 5, 6 et 7 Hexadécimale 4 0, 1, 2, 3, 4, 5, 6, 7 8, 9, A, B, C, D, E et F Voyons deux exemples de passage d’une base à une autre. a) Exprimons 2F9 (base hexadécimale) dans la base binaire. Lorsque les bases en jeu sont les bases binaire, octale et hexadécimale, il est souvent plus simple de passer par la base binaire. En passant par la base binaire, on évite les divisions successives de l’algorithme ci-dessus. Cette méthode, dite par regroupements, est valide pour les bases qui sont des puissances de 2. C'est le cas de la base 8 (8 = 23) et de la base 16 (16 = 24). Dans le cas d'un passage du binaire à la base 8, les bits sont regroupés par 3, et ensuite décodés. Au besoin, nous pouvons ajouter des 0 à gauche. Pour passer à la base 16 (hexadécimal), nous appliquons le même procédé en regroupant cette fois les bits par 4. Pour représenter 2F9 en binaire, on procède en trois étapes. On exprime d’abord chaque chiffre de la représentation hexadécimale en binaire. Puis, on regroupe le code obtenu en un seul. Et, enfin, on supprime les zéros devant le dernier chiffre significatif à gauche. 2 F 9 0010 1111 1001 Alors, 2F9 vaut 0010 1111 1001 en binaire, soit 1011111001, en supprimant les zéros non significatifs. © Télé-université, 2002 INF 1130 Comprendre l’ordinateur : organisation, exploitation et programmation CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION b) 4 Exprimons 2F9 de la base hexadécimale vers la base octale. On convertit d’abord 2F9 en binaire. Puis, on regroupe les chiffres par bloc de 3 de droite à gauche. 2 F 9 0010 1111 1001 Regroupement par trois, puisque la base octale est codée sur 3 bits : 001 011 111 001 1 3 7 1 Alors, 2F9 en hexadécimal vaut 1371 en octal. 4.4 Les systèmes de codage de textes Un système de représentation comprend un code pour représenter chaque caractère et une stratégie d’encodage des séquences de caractères. Dans cette section, nous nous limiterons aux aspects de codage. L’ensemble des symboles à coder comprend les lettres de l’alphabet (minuscules et majuscules), les nombres (0 à 9), les signes de ponctuation, les symboles arithmétiques et les symboles spéciaux utilisés dans les langues anglaise, française, italienne, espagnole (espace, symboles d’échappement, tabulation, fin de ligne, $, @, \, ~, etc.). Cet ensemble alphanumérique contient environ de 100 à 150 symboles. Un octet est la taille minimum d’une zone mémoire. De plus, comme 8 bits permettent 256 combinaisons différentes, c’est donc naturellement que les systèmes de représentation de caractères EBCDIC et ASCII ont adopté une représentation sur un octet (8 bits). Ces codages binaires ont été créés afin de normaliser les communications entre les systèmes numériques. 4.5 Le standard EBCDIC Le codage EBCDIC (extended binary coded decimal interchange code) est utilisé sur les gros ordinateurs ou systèmes d'IBM (mainframes). Il existe en six versions parfaitement incompatibles entre elles et il y manque plusieurs signes, absolument nécessaires dans beaucoup de langues modernes. De plus, les caractères manquants varient d'une version à l'autre. La compagnie IBM est accusée d’avoir fait de ce codage une tactique pour contrôler les utilisateurs. 4.6 Le standard ASCII Le système de codage des caractères ASCII (american standard code for information interchange) est le plus répandu. Il en existe plusieurs variantes et certains symboles spéciaux varient d’une région à l’autre. La version de base correspond à la variante US-ASCII et comprend l’ensemble des symboles de la langue anglaise. Le premier caractère, « l’espace », a le code 32 et le dernier symbole, « le tilde » ( ~ ), occupe le code 126. Le code est incrémenté dans l’ordre de la liste ci-dessus. Les valeurs des codes de 0 à 31 et supérieures à 127 ne correspondent pas à des symboles imprimables; elles sont réservées aux symboles de contrôle ou d’échappement. © Télé-université, 2002 INF 1130 Comprendre l’ordinateur : organisation, exploitation et programmation CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION 5 ! " # $ % & ‘ ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` A b c d e f G h i j K l m n o p Q r s t u v W x y z { | } ~ La multiplicité des variantes, dites nationales, pose un problème de compatibilité entre les systèmes. Le tableau suivant donne une liste non exhaustive de quelques variantes. Code en décimal Symbole Variante nationale 35 # # 36 $ ¤ 64 @ É 91 £ Ù § Ä [ Ä Æ ° 92 \ Ö Ø ç Ñ ½ ¥ 93 ] Å Ü § ê é ¿ 94 ^ Ü 95 _ È 96 ` é ä µ ô ù 123 { ä æ é à º 124 | ö ø ù ò ñ ƒ 125 } å ü è ç ¼ 126 ~ ü ¯ β ¨ û à | î ¨ Ì ´ À cause des variantes nationales du codage ASCII, certains symboles sont plus à risque que d’autres. En effet, les caractères de l’alphabet, les nombres (0 à 9) et les symboles suivants seront généralement interprétés correctement : ! " % & ‘ ( ) * + , - . / : ; < = > ? Par exemple, le symbole « < » dans un document HTML sera interprété comme le début d’un marquage, plutôt que comme « inférieur à ». Dans ce langage, le problème de portabilité entre les systèmes est résolu en indiquant dans l’entête du document le système de codage utilisé. Cette même incompatibilité conduit souvent au mauvais décodage des caractères accentués des courriers électroniques. 4.7 La famille de standards ISO 8859 La famille de standards ISO 8859 est une extension du codage ASCII pour répondre aux spécificités de certaines régions. Par exemple, le système de codage ISO 8859-1 ou ISOLatin 1 comprend, en plus des symboles ASCII, un ensemble de caractères accentués et d’autres symboles utilisés en Europe de l’Ouest. Les symboles correspondant aux © Télé-université, 2002 INF 1130 Comprendre l’ordinateur : organisation, exploitation et programmation CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION 6 symboles ASCII conservent le même code et les symboles supplémentaires sont codés dans l’espace de 160 à 255; ce sont : ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ - ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à Á â ã ä Å Æ ç È é ê ë ì í î ï ð Ñ ò ó ô Õ Ö ÷ Ø ù ú û ü ý þ ÿ Le tableau ci-dessous indique quelques variantes du codage ISO 8859 existant. Standard ISO 8859-x Nom de l’alphabet Caractérisation 1 Latin 1 Europe de l’Ouest 2 Latin 2 Centre et Est de l’Europe 3 Latin 3 Sud de l’Europe 4 Latin 4 Europe du Nord 5 Latin/Cyrillique Langue slave 6 Arabe Langue arabe 7 Grec Langue grecque 8 Hébreu Langue hébreu 9 Latin 5 Langue turque 10 Latin 6 Nordique (Inuit, Islande) 11 Thaï Langue thaï 13 Latin 7 Langue balte 14 Latin 8 Langue celtique Non défini 4.8 Les standards ISO 10646 et UNICODE Le standard ISO 10646 est un standard international de représentation. Il prend en compte un ensemble de caractères beaucoup plus vaste, d’où son appellation de jeu de caractères universel, aussi connu sous l’appellation UCS (universal character set). Pour parvenir à ses fins, le standard ISO 10646 a adopté une représentation sur 16 bits. Le standard UNICODE est également un standard 16 bits, dérivé du standard ISO 10646; le consortium UNICODE en est le dépositaire. À ce jour, nous en sommes à la version UNICODE 3.2; avec cette dernière version, on voit s’ajouter 1016 nouveaux caractères aux 38887 symboles déjà existants. Des informations supplémentaires se trouvent sur le site de UNICODE1. 1 [ http://www.unicode.org/reports/tr28/ ] © Télé-université, 2002 INF 1130 Comprendre l’ordinateur : organisation, exploitation et programmation CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION 7 Résumé La communication est fortement influencée par le mode de codage de l’information. Avant de transmettre une information, il faut la coder dans un système de représentation univoque afin d’éviter toute confusion. Dans ce chapitre, nous avons vu ce qu’un système de représentation cherche à faire, soit représenter un ensemble de symboles. Le système décimal que nous connaissons bien ne convient pas aux ordinateurs. En effet, la technologie des ordinateurs repose sur la position des micro-interrupteurs qui ne distinguent que deux états : présence ou absence du courant électrique; cela explique l’utilisation du système binaire pour coder les informations en informatique. Cependant le système binaire, quoiqu’il soit bien adapté à la représentation de l’information, n’est pas très pratique pour les calculs : d’où la nécessité d’utiliser d’autres systèmes, telle la numération octale ou hexadécimale. Rappelons que le système hexadécimal constitue la base du traitement de l’information pour les microprocesseurs. Rappelons également qu’il existe aujourd’hui des organismes qui travaillent sur des standards pour normaliser les communications entre les systèmes numériques : le standard EBCDIC, le standard ASCII, la famille de standards ISO 8859, la famille de standards ISO 10646 (ou UCS) et le standard UNICODE. © Télé-université, 2002 INF 1130 Comprendre l’ordinateur : organisation, exploitation et programmation