# Notation caret

La notation caret, de l'anglais caret notation que l'on pourrait traduire par notation circonflexe, ou encore notation à accent circonflexe, est une des notations utilisée pour représenter les caractères de contrôle non affichables d'un terminal informatique, c'est-à-dire les caractères ASCII de 0 à 31 et le 127 (soit 33 caractères). Elle consiste en l'écriture d'un accent circonflexe (aussi appelé caret, du latin « il manque ») suivi d'une lettre en capitale dont la position dans l'alphabet latin équivaut à la position du caractère de contrôle dans la table ASCII. Ainsi, le caractère SOH (premier caractère de contrôle ASCII) est représenté par la notation ^A; le caractère EOT par la notation ^D; et ainsi de suite.

## Origine

Le mot caret viendrait du verbe latin carere qui signifie manquer.

## Notation

La notation caret attribue aux lettres de l'alphabet latin (dans sa forme simplifiée) la position des caractères de contrôle dans la table ASCII: ^A fait référence au premier caractère de contrôle (SOH), car A est la première lettre de l'alphabet. Pour représenter le zéroième caractère de contrôle (NUL), ainsi que ceux qui succèdent au 26e caractère de contrôle (SUB), on s'appuie sur la table ASCII en associant aux lettres en capitale leur position dans l'alphabet, autrement dit on assigne au caractère A de la table ASCII la première position. On utilise alors les caractères qui occupent la même position que les caractères de contrôle dans la table ASCII d'origine. Ainsi, le caractère @, qui occupe désormais la zéroième position, représente le zéroième caractère de contrôle (NUL) de la table ASCII d'origine.
Attribution des positions de l’alphabet à la table ASCII :
| Caractère ASCII | ? | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
| Position dans la table ASCII | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 |
| Position dans l'alphabet | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | | | | | |
| Position par rapport à l'alphabet | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Pour des raisons techniques, le 127e caractère de contrôle (DEL) est représenté par le caractère ? qui, après décalage, occupe la position -1 (ce qui équivaut à la position 127 dans un codage à 7 bits). En effet, après avoir attribué la position 1 au caractère A, c'est-à-dire après avoir décalé les positions de 64 rangs vers la droite, il n'y a plus assez de caractères dans la table ASCII (qui en comprend 128 dans sa forme non étendue) pour représenter le caractère de contrôle (DEL) qui devrait se situer à la 191e position.
Table de correspondance :
| Notation caret | Caractère ASCII | Notation caret | Caractère ASCII |
| ^@ | NUL (Null) | ^Q | DC1 (Device Control One) |
| ^A | SOH (Start of Header) | ^R | DC2 (Device Control Two) |
| ^B | STX (Start of text) | ^S | DC3 (Device Control Three) |
| ^C | ETX (End of Text) | ^T | DC4 (Device Control Four) |
| ^D | EOT (End of Transmission) | ^U | NAK (Negative Acknowledge) |
| ^E | ENQ (Enquiry) | ^V | SYN (Synchronous Idle) |
| ^F | ACK (Acknowledge) | ^W | ETB (End of Transmission Block) |
| ^G | BEL (Bell) | ^X | CAN (Cancel) |
| ^H | BS (Backspace) | ^Y | EM (End of medium) |
| ^I | HT (Horizontal Tabulation) | ^Z | SUB (Substitute) |
| ^J | LF (Line Feed) | ^[ | ESC (Escape) |
| ^K | VT (Vertical Tabulation) | ^\ | FS (File Separator) |
| ^L | FF (Form Feed) | ^] | GS (Group separator) |
| ^M | CR (Carriage Return) | ^^ | RS (Record Separator) |
| ^N | SO (Shift Out) | ^_ | US (Unit separator) |
| ^O | SI (Shift In) | ^? | DEL (Delete) |
| ^P | DLE (Data Link Escape) | | |

## Utilisation

Certains logiciels, tels que les éditeurs de texte GNU Emacs et Vi utilisent la notation caret. Ils permettent ainsi de distinguer rapidement les caractères de contrôle du reste du contenu.
À titre d'exemple, la description technique du format PNG nous indique que la signature d'un fichier PNG se fait avec les 8 premiers octets dont les valeurs décimales sont les suivantes : 137 80 78 71 13 10 26 10. La lecture d'un tel fichier avec un éditeur de texte utilisant la notation caret nous indique la signature sous cette forme:
Signature d'un fichier PNG en notation caret :
| notation octale, caret et ASCII (avec GNU Emacs) | \211PNG^M ^Z |
| notation hexadécimale, caret et ASCII (avec Vim) | <89>PNG^M ^Z |
| On remarque que le caractère de retour à la ligne (LF) de valeur décimale 10 est affiché normalement. ||
| notation hexadécimale, caret et ASCII | <89>PNG^M^J^Z^J |
| Le retour à la ligne est affiché en notation caret ||

## Risques de confusion

La notation caret connaît quelques variantes. Certains manuels d'utilisation de logiciel utilisent la notation ^A pour indiquer qu'il s'agit de la combinaison des touches Ctrl + a ou Ctrl + A (Sélectionner tout), ce qui ne correspond absolument plus au caractère de contrôle SOH. Aussi, le logiciel GNU Screen admet la notation ^Ac pour exécuter une commande similaire à la combinaison des touches Ctrl + a + c, telle que dans la commande screen -e^Ac pour ouvrir un nouveau terminal. Enfin, le caret étant très utilisé dans les expressions régulières, on pourrait supposer la présence d'un caractère de contrôle dans la commande grep ^A dictionnaire.txt.