1ère Générale NSI

 

Term. Générale NSI

 

Terminale STI2D SIN

Bts Ccst

Technico-commercial 3.0

[[{"text":"Nous savons qu'un ordinateur est uniquement capable de traiter des données binaires, comment sont donc codés les textes dans un ordinateur ? Ou plus précisément, comment sont codés les caractères dans un ordinateur ?","posi":0,"title":"Codage des caractères","tagtitle":"h1"}],[{"text":"Avant 1960 de nombreux systèmes de codage de caractères existaient, ils étaient souvent incompatibles entre eux. En 1960, l'organisation internationale de normalisation (ISO) décide de mettre un peu d'ordre dans ce bazar en créant la norme ASCII (American Standard Code for Information Interchange). À chaque caractère est associé un nombre binaire sur 8 bits (1 octet). En faite, seuls 7 bits sont utilisés pour coder un caractère, le 8e bit n'est pas utilisé pour le codage des caractères. Avec 7 bits il est possible de coder jusqu'à 128 caractères ce qui est largement suffisant pour un texte écrit en langue anglaise (pas d'accents et autres lettres particulières).","title":"Ascii"}],[{"text":"


Comme vous pouvez le constater dans le tableau ci-dessus, au \"A\" majuscule correspond le code binaire (1000001)2 ((65)10 ou (41)16).


À faire vous-même 1

Quel est le code binaire du \"a\" minuscule en ASCII?

"},{"edit":"

Ecrire ici.

"},{"text":"

Comme vous pouvez le constater, certains codes ne correspondent pas à des caractères (de 0 à (32)10), nous n'aborderons pas ce sujet ici.


"}],[{"text":"

La norme ASCII convient bien à la langue anglaise, mais pose des problèmes dans d'autres langues, par exemple le français. En effet l'ASCII ne prévoit pas d'encoder les lettres accentuées. C'est pour répondre à ce problème qu'est née la norme ISO-8859-1. Cette norme reprend les mêmes principes que l'ASCII, mais les nombres binaires associés à chaque caractère sont codés sur 8 bits, ce qui permet d'encoder jusqu'à 256 caractères. Cette norme va être principalement utilisée dans les pays européens puisqu'elle permet d'encoder les caractères utilisés dans les principales langues européennes (la norme ISO-8859-1 est aussi appelée \"latin1\" car elle permet d'encoder les caractères de l'alphabet dit \"latin\")

Problème, il existe beaucoup d'autres langues dans le monde qui n'utilisent pas l'alphabet dit \"latin\", par exemple le chinois ou le japonnais ! D'autres normes ont donc dû voir le jour, par exemple la norme \"GB2312\" pour le chinois simplifié ou encore la norme \"JIS_X_0208\" pour le japonais.

Cette multiplication des normes a très rapidement posé problème. Imaginons un français qui parle le japonais. Son traitement de texte est configuré pour reconnaitre les caractères de l'alphabet \"latin\" (norme ISO-8859-1). Un ami japonais lui envoie un fichier texte écrit en japonais. Le français devra modifier la configuration de son traitement afin que ce dernier puisse afficher correctement l'alphabet japonais. S'il n'effectue pas ce changement de configuration, il verra s'afficher des caractères ésotériques.

","title":"ISO-8859-1"}],[{"text":"

Pour éviter ce genre de problème, en 1991 une nouvelle norme a vu le jour : Unicode

Unicode a pour ambition de rassembler tous les caractères existant afin qu'une personne utilisant Unicode puisse, sans changer la configuration de son traitement de texte, à la fois lire des textes en français ou en japonais

Unicode est uniquement une table qui regroupe tous les caractères existant au monde, il ne s'occupe pas de la façon dont les caractères sont codés dans la machine. Unicode accepte plusieurs systèmes de codage : UTF-8, UTF-16, UTF-32. Le plus utilisé, notamment sur le Web, est UTF-8.

Pour encoder les caractères Unicode, UTF-8 utilise un nombre variable d'octets : les caractères \"classiques\" (les plus couramment utilisés) sont codés sur un octet, alors que des caractères \"moins classiques\" sont codés sur un nombre d'octets plus important (jusqu'à 4 octets). Un des avantages d'UTF-8 c'est qu'il est totalement compatible avec la norme ASCII : Les caractères Unicode codés avec UTF-8 ont exactement le même code que les mêmes caractères en ASCII.

À faire vous-même 2

Quel est le code binaire du \"b\" minuscule Unicode codé avec UTF-8 ?

","title":"Unicode Utf-8"},{"edit":"

Ecrire ici.

"}],[{"text":"Source :

"}],[{"text":"
Faire les exercices sur la page suivantes:
https://iut-info.univ-reims.fr/users/nourrit/codages/page10.html
","title":"Exercice"},{"edit":"
Mettre le résultat ici (code et figure).

"},{"solution":""}],[{"text":"La méthode des codes correcteur d'erreurs, introduite ici, permet d'expliquer le fait que les transmissions numériques sont plus fiables que les transmissions analogiques.

Supposons que les données à transmettre sur un réseau quelconque soient constituées de 16 bits (ce qui correspond à un mot mémoire de notre mini-ordinateur). La ligne de transmission, n'étant pas fiable (certains bits peuvent être modifiés ou perdus pendant leur transfert), on va utiliser une version simplifiée de cette méthode des codes correcteurs pour améliorer la transmission. Elle consiste à effectuer les transformations suivantes :
  • on dispose les 16 bits dans un tableau de 4 lignes et 4 colonnes ;
  • on construit une ligne et une colonne de contrôle en associant à chaque ligne et à chaque colonne du tableau un nouveau bit dit \"de parité\" ayant la signification suivante :
    • il vaut 0 si le nombre de bits de valeur 0 dans la ligne (ou la colonne) est pair ;
    • il vaut 1 sinon.
  • on transmet les 8 bits supplémentaires ainsi définis à la suite des 16 bits initiaux (d'abord les 4 bits de contrôle verticaux, puis les 4 bits de contrôle horizontaux).

Example 5   La suite de bits 1101001101011000 donne lieu au tableau suivant :

     colonne de contrôle
 11011
 00110
 01010
 10001
      
ligne de controle0011 

Les données à transmettre sont donc : 1101001101011000 1001 0011.
  1. Montrer que si on reçoit le message suivant : 000?1?011100?010100?0110, où les \"?\" représentent des bits inconnus (de valeur incompréhensible), il est possible de reconstituer en entier les données qui ont été envoyées (y compris les bits de contrôle).
  2. Reconstituer autant que possible le message : 1??1101?110?0?001?0?1?10
  3. Montrer que le message suivant : 111001110010110011110101, transmis suivant le même mode, est incohérent. Quelle est l'explication la plus simple pour rendre compte de cette incohérence et comment y remédier ?
","title":"Exercice 1"},{"edit":"

Mettre le résultat ici (code et figure).

"},{"solution":"
  1. Pour reconstituer la valeur des bits manquant, il suffit de reconstituer le tableau ayant servi au calcul de ligne et de la colonne de contrôle et de vérifier la valeur du bit de parité sur chaque ligne et sur chaque colonne de ce tableau. Le message 000?1?011100?010100?0110 devient donc :

         colonne de contrôle
     00011
     10010
     11000
     00101
          
    ligne de controle0110 

    On ne peut déduire la valeur d'un bit inconnu qu'à condition qu'il soit le seul indéterminé sur sa ligne ou sur sa colonne (contrôle compris). Il faut donc respecter un certain ordre...
    Le message envoyé était donc : 000110011100001010010110.
  2. Le message 1??1101?110?0?001?0?1?10 donne lieu au tableau :

         colonne de contrôle
     11011
     10111
     11000
     0?00?
          
    ligne de contrôle1?10 

    Tous les bits inconnus n'ont pas pu être déduits. Le message reconstitué au maximum est le suivant : 1101101111000?00110?1?10
  3. Le message transmis donne lieu au tableau suivant :

         colonne de contrôle
     11101
     01111
     00101
     11001
          
    ligne de controle0101 

    La 3ème colonne et la 4ème ligne de ce tableau (en gras) ne respectent pas les règles de construction des bits de contrôle. La raison la plus probable de cette incohérence est une erreur de transmission du bit situé à l'intersection de cette ligne et de cette colonne. Si en effet, la valeur de ce bit passe de 0 à 1, le tableau devient cohérent.
Le principe des codes correcteurs d'erreurs est donc d'ajouter des informations redondantes aux données transmises, pour contrôler leur cohérence et donc corriger les erreurs."}],[{"text":"Voici les codes ASCII, sur un octet chacun, de quelques caractères alphabétiques :
  • A : 01000001 ; B : 01000010 ; C : 01000011
  • a : 01100001 ; b : 01100010 ; c : 01100011
  1. Ecrire les valeurs en base 10 correspondant à ces nombres binaires.
  2. Quel doivent être les codes ASCII de D et de d ? De Z et de z ?
  3. Donner la description (sous forme de graphe) d'une machine de Turing permettant de transformer le code ASCII (en binaire) d'une lettre minuscule écrit sur son ruban en le code ASCII de la lettre majuscule correspondante.
  4. Donner le contenu de la mémoire d'un ordinateur de type Von Neumann (avec le schéma habituel) tel que si le code ASCII d'une lettre minuscule se trouve stocké à l'adresse 0110, alors après exécution du programme contenu dans cette mémoire, le code ASCII de la lettre majuscule correspondante sera stockée à l'adresse 1001.
","title":"Exercice 2"},{"edit":"

Mettre le résultat ici (code et figure).

"},{"solution":"
  1. Les valeurs en base 10 correspondant aux codes ASCII fournis sont les suivantes :
    • A : 65 ; B : 66 ; C : 67
    • a : 97 ; b : 98 ; c : 99
  2. La suite des codes ASCII respectant l'ordre alphabétique, les codes manquant sont :
    • D : 01000100 (68 en décimal)
    • d : 01100100 (100 en décimal)
    • Z : 01011010 (90 en décimal)
    • z : 01111010 (122 en décimal)


  3. Pour passer du code ASCII d'une lettre minuscule à celui de la majuscule correspondante, il suffit de transformer le 3ème bit en partant de la gauche de 1 à 0. Par ailleurs, les deux premiers bits sont toujours égaux à \"01\" et les 5 derniers bits ne sont pas modifiés. Supposons donc que le code ASCII d'une minuscule soit écrit sur le ruban, la machine de Turing la plus simple possible qui aura l'effet souhaité est décrite par le graphe de la figure 6.1.



    Figure 6.1: graphe de la machine de Turing de l'exercice 2



  4. En termes d'opération arithmétique décimale, transformer le code ASCII d'une lettre minuscule en celui de la majuscule correspondante revient à soustraire 32 à ce code. Cette opération suppose donc que le nombre 32 soit stocké quelque part dans la mémoire (à une adresse notée ad, différente des adresses imposées par l'énoncé), et que l'instruction élémentaire suivante : \"0010 0110 ad 1001\" soit stockée à l'adresse référencée dans le CO. La configuration de la figure 6.2 est donc une des solutions possibles (où ad vaut 0100) .



    Figure 6.2: machine de Von Neumann de l'exercice 2


"}]]

En poursuivant votre navigation sur mon site, vous acceptez l’utilisation des Cookies et autres traceurs  pour réaliser des statistiques de visites et enregistrer sur votre machine vos activités pédagogiques. En savoir plus.