• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 01/10/2019

Codez les caractères alphanumériques

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Code alphanumérique : le code ASCII

Il convient bien pour coder les textes en anglais, mais est insuffisant pour le français, notamment en raison de l’absence des caractères accentués. Il est à noter aussi que les 32 premières combinaisons ne sont pas imprimables ainsi que la dernière, 127 : toutes correspondent à des commandes de terminal informatique. Ainsi, la combinaison 127 correspond à la commande pour effacer.

Le tableau ci-dessous montre la table ASCII 7 bits historique avec l’état du mot de 7 bits converti en décimal, en hexadécimal, en octal (mais il est totalement inutile de considérer cette colonne) et en html pour les caractères imprimables. Vous pouvez voir, par exemple, que le caractère « S » est codé par la valeur 53h, « O » par 4F.

La table ASCII est donc une table de correspondance entre les valeurs binaires de mots de 7 bits, représentées en général par les valeurs hexadécimales pour des questions de commodité, et les caractères alphanumériques correspondants. Comme beaucoup de tables, elle est conventionnelle et figée dans un standard qui date des débuts de l’informatique.

Code ASCII 7 bits
Code ASCII 7 bits

Si l’ASCII historique est codé sur 7 bits, les microcontrôleurs et processeurs modernes travaillent avec au moins 8 bits. C’est la raison pour laquelle nous représenterons les caractères ASCII sur 8 bits, avec le bit de poids fort toujours à 0.

Extension à 8 bits du code ASCII
Extension à 8 bits du code ASCII

Unicode

Unicode est un standard informatique qui permet des échanges de textes dans de très nombreuses langues, à un niveau mondial. Il est développé par le Consortium Unicode, qui vise au codage de texte écrit en donnant à tout caractère de n'importe quel système d'écriture un nom et un identifiant numérique, et ce de manière unifiée, quelle que soit la plateforme informatique ou le logiciel utilisés.

À ce jour, Unicode référence plus de 137 000 caractères dans une centaine d’écritures, et va au-delà de simples tales de correspondances entre les caractères et leurs équivalents binaires sur plusieurs octets. Le standard incorpore aussi des relations sémantiques qui peuvent exister entre plusieurs caractères successifs d'un texte, et normalise des algorithmes de traitement qui préservent au maximum la sémantique des textes transformés.

La principale caractéristique d’UTF-8 est qu’elle est rétrocompatible avec la norme ASCII, c’est-à-dire que tout caractère ASCII se code en UTF-8 sous forme d’un unique octet, identique au code ASCII. Par exemple, « A » (A majuscule) a pour code ASCII 65 et se code en UTF-8 par l'octet 65. Chaque caractère dont le numéro d’index est supérieur à 127 (caractère non ASCII 7 bits) se code sur 2 à 4 octets. Le caractère «  » (euro) se code par exemple sur 3 octets : 226, 130, et 172.

Code BCD

Pour comprendre le code BCD (pour Binary Coded Decimal) ou DCB (pour décimal codé binaire), nous allons prendre un exemple élémentaire. Supposons qu’un système numérique pilote un four de cuisson dont les températures sont comprises entre 0°C et 255°C (pour la commodité). Si nous voulons afficher la température avec la résolution de 1°C, un système 8 bits convient, puisque 8 bits permettent de coder les entiers de 0 à 255. Toutefois, si nous voulons que le four affiche la température sur un dispositif de type afficheur à LED 7 segments comme celui représenté ci-dessous,

Un afficheur 7 segments
Un afficheur 7 segments

nous sommes confrontés au problème suivant : pour afficher une température sur trois digits décimaux, il faut 4 bits par digit fois trois digits, soit en tout 12 bits. Or notre système n’en comporte que 8. Avec ces 8 bits, nous pouvons afficher la température en hexadécimal. Mais les systèmes numériques ne sont pas forcément utilisés que par des personnes qui connaissent l’hexadécimal. Si le four affiche comme température BF°C, rares sont les personnes qui sauront convertir BFh en décimal...

Le mot binaire 8 bits du système qui utilise le binaire au sens du système de numération de base 2 devra d’abord être converti en BCD en un mot de 12 bits qui pourront commander les trois afficheurs 7 segments.

Clairement, le système BCD n’est pas un système de numération à base de sommes pondérées d’une base particulière. En fait, c’est un système hybride où chaque digit décimal est représenté en binaire sur 4 bits. Ce code est dit incomplet puisqu’on ne trouvera jamais en BCD un digit qui vaut 1111 : en effet, les digits décimaux sont compris entre 0 (0000 en binaire) et 9 (soit 1001, en binaire). Il y a donc une augmentation du nombre de bits requis de façon stricte par rapport à un système pondéré. 0 à 255 passe de 8 bits en binaire strict à 12 bits en BCD.

Code Gray ou code binaire réfléchi

Nous ne faisons que le mentionner mais sans entrer dans les détails. Nous rencontrerons à nouveau ce code dans la partie 4, dans la question de la synthèse des fonctions logiques.

Le code Gray est notamment utilisé quand les combinaisons binaires résultent de la lecture d’entrées numériques. Nous allons prendre un exemple très classique, l’exemple d’un codeur absolu de rotation. Si on veut connaître la position absolue d’un arbre de moteur, par exemple, on utilise un codeur absolu. Il s’agit d’un disque alternant parties réfléchissantes et parties non réfléchissantes, comme celui ci-dessous :

Encodeur optique
Encodeur optique

Celui-ci est un codeur 12 bits qui permet donc de mesurer l’angle que fait l’arbre moteur par rapport à une position de référence sur 2^12, soit 4 096 valeurs possibles. La résolution est donc un peu meilleure que le dixième de degré. Physiquement, en face des 12 pistes concentriques qui définissent le mot 12 bits, il y a autant de capteurs optiques.

Quand on balaie les combinaisons binaires naturelles (sur 4 bits pour simplifier, mais c’est vrai quel que soit le nombre de bits), il y a très régulièrement des transitions quand on passe d’une combinaison à celle qui suit immédiatement, où plusieurs bits commutent (c’est-à-dire changent d’état) simultanément.

Par exemple, quand on passe de 7 à 8, sur 4 bits, on obtient une transition 0111 vers 1000 : comme on voit aisément, les 4 bits ont commuté simultanément. Sur le plan physique, les 4 photo-transistors ne vont pas commuter simultanément sur un plan strict. Il y aura de très légères différences de temps de commutation liées à la technologie.

Cela signifie que dans une commutation théorique de type 0111 vers 1000, il y aura des états intermédiaires, certes très furtifs, mais faux, par exemple 1111 si le bit de poids fort est le premier à commuter. Dans certains cas, ces états faux furtifs peuvent gêner. C’est pour cette raison qu’on a inventé un code qui est défini par ce problème d’états faux. Ainsi, par définition, le code Gray ou binaire réfléchi est défini comme étant un code pour lequel un bit et un seul commute quand on passe d’un état à celui immédiatement consécutif.

Pour 4 bits, on obtient les combinaisons suivantes :

Code de Gray sur 4 bits
Code de Gray sur 4 bits

Évidemment, le code Gray n’est pas un système de type à sommes pondérées des puissances de 2. Il y a plusieurs algorithmes pour générer la séquence du code Gray pour un nombre de bits quelconque. L’une d’entre elles est basée sur la parité de la combinaison courante.

Si le nombre de bits à 1 y est pair, il faut inverser le LSB (bit de poids faible).

Si le nombre de bits à 1 y est impair, il faut inverser le bit situé à gauche du 1 le plus à droite.

En résumé

Le codage d'une information quelle qu'elle soit n'a plus de secret pour nous. Il est temps d'envisager la possibilité de traiter ces informations. Nous avons là un long chemin à parcourir. Avant d'envisager des traitements complexes comme par exemple, la compression que nous avons esquissée précédemment, il faut d'abord commencer par le commencement, à savoir, les portes logiques qui sont les briques de base de tout traitement électronique. La partie 3 est consacrée aux portes logiques.

Exemple de certificat de réussite
Exemple de certificat de réussite