La table ASCII en 4 colonnes (2017)
(garbagecollected.org)- En divisant l’ASCII en 7 bits entre les 2 bits de poids fort (groupe) et les 5 bits de poids faible (valeur), puis en l’organisant dans une table à 4 colonnes, la relation entre caractères de contrôle et caractères imprimables apparaît immédiatement
- La touche
CTRLmet à 0 les bits de poids fort du caractère saisi, ce qui produit le caractère de contrôle (control character) partageant les mêmes 5 bits de poids faible - Par exemple, si l’on appuie sur CTRL avec
[(10 11011), on obtientESC(00 11011), ce qui s’explique par une opération binaire AND - La raison pour laquelle
^Jcorrespond à un saut de ligne,^Hà un retour arrière et^Ià une tabulation repose sur la même structure ; l’affichage^M(CR) dans les fichiers texte Windows suit le même principe - Les tables ASCII classiques masquent ce motif, mais en séparant les colonnes par groupes de 32, l’intention de conception devient évidente
Découverte de la table ASCII en 4 colonnes
- L’utilisateur Hacker News soneil a publié une version de la table ASCII disposée en 4 colonnes de 32 éléments
- Cette disposition permet de voir immédiatement que le passage des majuscules aux minuscules correspond à une différence d’un seul bit, et que les lettres de l’alphabet suivent le schéma
40h + valeur d’ordre(les minuscules étant en60h) - On y voit aussi tout de suite pourquoi
^\[correspond à ESC
Structure de l’encodage ASCII sur 7 bits
- ASCII est un encodage sur 7 bits ; les 2 premiers bits représentent 4 groupes et les 5 suivants 32 valeurs
- Groupe
00: caractères de contrôle (NUL, SOH, STX, ESC, etc.) - Groupe
01: caractères spéciaux et chiffres (Spc, !, ", #, etc.) - Groupe
10: alphabet en majuscules (@, A, B, C, etc.) - Groupe
11: alphabet en minuscules (`, a, b, c, etc.)
- Groupe
- Les caractères d’une même ligne ont les mêmes 5 bits de poids faible, seuls les bits de groupe diffèrent
Table ASCII en 4 colonnes
| Bits | 00 (contrôle) | 01 (spéciaux/chiffres) | 10 (majuscules) | 11 (minuscules) |
|---|---|---|---|---|
| 00000 | NUL | Spc | @ | ` |
| 00001 | SOH | ! | A | a |
| 00010 | STX | " | B | b |
| 00011 | ETX | # | C | c |
| 00100 | EOT | $ | D | d |
| 00101 | ENQ | % | E | e |
| 00110 | ACK | & | F | f |
| 00111 | BEL | ' | G | g |
| 01000 | BS | ( | H | h |
| 01001 | TAB | ) | I | i |
| 01010 | LF | * | J | j |
| 01011 | VT | + | K | k |
| 01100 | FF | , | L | l |
| 01101 | CR | - | M | m |
| 01110 | SO | . | N | n |
| 01111 | SI | / | O | o |
| 10000 | DLE | 0 | P | p |
| 10001 | DC1 | 1 | Q | q |
| 10010 | DC2 | 2 | R | r |
| 10011 | DC3 | 3 | S | s |
| 10100 | DC4 | 4 | T | t |
| 10101 | NAK | 5 | U | u |
| 10110 | SYN | 6 | V | v |
| 10111 | ETB | 7 | W | w |
| 11000 | CAN | 8 | X | x |
| 11001 | EM | 9 | Y | y |
| 11010 | SUB | : | Z | z |
| 11011 | ESC | ; | [ | { |
| 11100 | FS | < | \ | | |
| 11101 | GS | = | ] | } |
| 11110 | RS | > | ^ | ~ |
| 11111 | US | ? | _ | DEL |
Principe de fonctionnement de la touche CTRL
- Quand on appuie sur
CTRL, les bits de poids fort du caractère saisi sont tous mis à 0, ce qui le déplace vers le groupe des caractères de contrôle (00) - Cela peut se représenter par une opération binaire AND :
10 11011([) AND00 11111(CTRL) =00 11011(ESC)
- Ainsi, le fait que
CTRL+[produise ESC n’est pas une attribution arbitraire, mais une conception fondée sur des opérations binaires
Exemples pratiques
^J(CTRL+J) correspond à LF (saut de ligne),^H(CTRL+H) à BS (retour arrière), et^I(CTRL+I) à TAB- Si l’on inspecte un fichier texte Windows avec
cat -A, on voit apparaître^M, car les fins de ligne Windows utilisent le format CR+LF - Le fait que les utilisateurs de vim emploient
CTRL+[dans le terminal à la place de ESC vient aussi de cette structure binaire
Aucun commentaire pour le moment.