Guide explicatif sur l'annexe A des notes de cours de
GABRINI, Ph. -- Organisation des ordinateurs et assembleur.

En préliminaire: chapitre 3.2.2  Représentation des caractères.

Lire la page 28.


Annexe A. Représentation décimale et hexadécimale des codes caractères ASCII

Page 217.

Nous retrouvons dans l'annexe A, la table des 256 caractères ASCII (American Standard Code for Information Interchange).

Dans la première colonne, nous retrouvons les caractères qui, dans le passé, servaient de caractères de contrôle.

00 à 1F

D'anciens caractères de contrôle comme:

FF-  Form Feed
CAN- Cancel
STX- Start of text
EOT- End of transmission
BEL- Bell
LF-  Line Feed
CR-  Carriage return

Sous PEP8, nous n'avons conservé que les caractères:

09- Horizontal Tabulation
0A- Line Feed (Changement de ligne / ENTREE)
0D- Carriage Return (Nouvelle ligne)

Les autres caractères sont remplacés par des caractères graphiques dépendant de plusieurs facteurs (code de pays, version de l'ordinateur, ...).
Ces caractères "non officiels" ne doivent pas être utilisés.

Dans la deuxième colonne, nous retrouvons certains symboles (mathématiques) ainsi que les chiffres:

20 à 3F

20-      SP (espacement)
21 à 2F- les symboles de ponctuation et de mathématiques
30 à 39- les chiffres 0 à 9
3A à 3F- les symboles < >


Dans la troisième colonne, nous retrouvons les lettres majuscules:

40 à 5F

40- @
41- A
42- B
.....
5A- Z
5B à 5F- autres symboles

Dans la quatrième colonne, nous retrouvons les lettres minuscules:

60 à 7F

60- `
61- a
62- b
.....
7A- z
7B à 7F- autres symboles

Avant 1987, on n'utilisait que 7 bits pour représenter un caractère ce qui limitait à 128 le nombre de caractères.
Depuis 1987, on utilise les 8 bits ce qui permet de représenter 256 caractères (ASCII étendu).

80 à FF

Les caractères accentués majuscules et minuscules.

TRI

Effectuons un tri sur: Andy ANDY andy andY

L'ordinateur classera dans l'ordre:
ANDY
Andy
andY
andy

En effet, le triage s'effectue selon la valeur des caractères ASCII:

ANDY    41 4E 44 59
Andy    41 6E 64 79
andY    61 6E 64 59  
andy    61 6E 64 79

Comme Andy peut être écrit de différentes façons, si on recherche Andy dans un texte,
il faudra d'abord traduire tout le texte en majuscules puis rechercher ANDY.


Majuscules vs minuscules

Pour transformer une lettre majuscule en minuscule, il s'agit d'ajouter 2016.

A (40) + 20 -> a (60)
B (41) + 20 -> b (61)
Z (5A) + 20 -> z (7A)

Pour transformer une lettre minuscule en majuscule, il s'agit de soustraire 2016.

a (60) - 20 -> A (40)
b (61) - 20 -> B (41)
z (7A) - 20 -> Z (5A)

Pour transformer toutes les lettres en minuscules, il s'agit d'effectuer un OR ("ou logique") avec 2016 (0010 00002):

A (4116) -> 0100 0001
   OR      0010 0000
           ---------
           0110 0001 -> a

a (6116) -> 0110 0001
   OR      0010 0000
           ---------
           0110 0001 -> a

Rappel: un OR est vrai("1") si un des 2 bits est vrai("1").

Pour transformer toutes les lettres en majuscules, il s'agit d'effectuer un AND ("et logique") avec DF16 (1101 11112):

A (4116) -> 0100 0001
   AND     1101 1111
           ---------
           0100 0001 -> A

a (6116) -> 0110 0001
   AND     1101 1111
           ---------
           0100 0001 -> A

Rappel: un AND est vrai("1") si et seulement si les 2 bits sont vrais("1").


En conclusion, le troisième bit de gauche détermine si la lettre est majuscule ou minuscule:

A 0100 0001
a 0110 0001
    ^
    |
    |

Remarque: on verra plus tard qu'un traitement particulier sera nécessaire pour les caractères accentués.