Cours Stage - Les caractères

Exercice - Les caractères

L'énoncé

On s'intéresse au code ASCII.
Ce dernier associe à chaque caractère un nombre unique, la correspondance entre les deux étant appelée charset. 
Ainsi, la lettre A est codée par le nombre 065, la lettre B est codée par le nombre 066,... De même, la lettre a est codée par le nombre 097. 

 


Question 1

Quel est le code ASCII des lettres d et Z ? 

Comme il y a 26 lettres dans l'alphabet et que la lettre A est codée par 065, on rajoute 25 au nombre précédent (il y a 26 lettres séparées par 25 intervalles). 
Ainsi, la lettre Z est codée par 090. 

De même, comme la lettre a est codée par 097, on rajoute 3 à ce nombre pour trouver 100 codant la lettre d. 

L'intervalle entre la letre Z (090) et la lettre a (097) est utilisé pour coder des signes [ ou _.

On se souviendra que la lettre A est codée par 065 et la lettre a par 097.

Question 2

Donner le code binaire de la lettre D. 

La lettre D est codée par le nombre 068.
Pour convertir ce nombre en binaire, on utilise la méthode des divisions consécutives. 
Cette dernière consiste effectuer la division euclidienne de 68 par 2, puis de son quotient par 2, jusqu'à que ce dernier vaille 0. 
L'écriture binaire sera alors le colonne des restes lue de bas en haut.

Dividende Diviseur Quotient Reste
68 2 34 0
34 17 0
17 2 8 1
8 2 4

0

4 2 2

0

2 2 1

0

1 2 0

1

Ainsi, $68 = \overline{1000100}^2$.

On pourra d'abord se demander quel est le nombre associé à la lettre D. 


Puis on pourra utiliser la méthode des divisions consécutives pour trouver la transcription en binaire de ce nombre. 

Question 3

Quelle est la taille en octets de la phrase suivante :
L'informatique, c'est vraiment fantastique !

On sait que chaque caractère est codé sur 8 bits, c'est à dire un octet. 
On compte alors le nombre de caractères présents dans la phrase, en n'oubliant pas les espaces, signes de ponctuations et apostrophes. 
On compte 44 caractères, ce qui correspond à une taille de 44 octets. 

Chaque caractère est codé sur 8 bits. 

Question 4

Est-il possible de coder la phrase suivante avec le code ASCII :
Il y avait beaucoup de vent dans la forêt, faisant des noeuds aux branches. 

On remarque que la phrase contient des caractères comme ê ou oe qui ne sont pas présent dans le code ASCII original.
De ce fait, la phrase n'est pas traduisible. 

On fera attention à la particularité de la phrase ainsi que des mots employés. 


On pourra se souvenir des lacunes du code ASCII et des raisons de son abandon. 

Question 5

Le codage ASCII n'utilise que 7 bits pour coder les caractères, le 8e bit étant un bit de contrôle car les erreurs lors de l'émission ou de la réception étaient fréquentes. 
Ce dernier se situe sur le bit de rang fort et remplit les conditions suivantes :
Il est égal à 1 si le nombre de 1 est pair, et vaut 0 sinon. 
En déduire alors le code binaire de la lettre D tel qu'implémenté selon ce système de contrôle. 

On a montré à la question 2 que la lettre D était codée par $068 = \overline{1000100}^2$
On remarque que le nombre codé en binaire contient deux 1, or deux est un nombre pair.
Le vrai codage ASCII est alors $\overline{11000100}^2$

Reprendre la question 2.

Question 6

Quel était l'inconvénient de ce système de contrôle ? 

On reprend la lettre précédente, à savoir D $=\overline{11000100}^2$.
Si l'on venait à modifier un bit du codage précédent, comme par exemple $\overline{11001100}^2$. On remarque alors que le nombre de 1 dans la partie hors contrôle est égal à trois, qui est impair. Le système détecte donc une erreur. 
Cependant, si l'on modifie deux bits $\overline{11001101}^2$, le nombre de 1 est alors pair, le bit de contrôle ne permet donc pas de détecter l'erreur.
Ainsi, cette méthode ne permet de détecter que les erreurs en nombre impair, donc la moitié des erreurs, ce qui est embêtant. 

On pourra par exemple essayer de changer un bit, puis deux et regarder l'influence sur le bit de contrôle. 

Question 7

Les systèmes devenant plus performants, ce sytème de contrôle fut abandonné, permettant ainsi d'utiliser le 8e bit à des fins de codage.
Combien de nouveaux caractères pouvaient on alors coder ? 

Initialement, le code ASCII utilisait seulement 7 bits.
Or chaque bit peut prendre deux valeurs distincts : 0 ou 1.
Ainsi, le code originel permettait de coder $2^7 = 128$ caractères. 
En utilisant 8 bits, le nombre de caractères augmente et vaut $2^8 =256$ : on a donc doublé le nombre de caractères !

On se souviendra qu'un bit peut prendre 2 valeurs. 

Question 8

Il est de temps en temps possible de recevoir un message peu compréhensible, comme par exemple : 
Regardons la lumière. 
Expliquer ce phénomène et dites pourquoi il tend à disparaître. 

Cette erreur provient d'un problème d'encodage/décodage. L'émetteur du message utilise une norme différente de celui qui le reçoit, d'où les signes incompréhensibles. 
Pour résoudre ce problème, la norme Unicode est apparue et permet le codage de textes écrits quelque soit le système utilisé. Cette norme fait appel à l'encodage UTF-8, qui est le plus répandu. De plus en plus de personnes utilisent à présent cette norme, ce qui permet de réduire ce problème de compatibilité. 

On pourra penser UTF-8.