Système octal
# Système octal

Le système de numération octal est le système de numération de base 8, et utilise les chiffres de 0 à 7. D'après l'ouvrage de Donald Knuth's, The Art of Computer Programming, il fut inventé par le roi Charles XII de Suède.

La numération octale peut être construite à partir de la numération binaire en groupant les chiffres consécutifs en triplets (à partir de la droite). Par exemple, la représentation binaire du nombre décimal 74 est 1001010, que l'on groupe en (00)1 001 010 ; ainsi, la représentation octale est 1 pour 1, 1 pour le groupe 001, et 2 pour le groupe 010, ce qui donne 112.

Le système octal est quelquefois utilisé en calcul à la place de l'hexadécimal. Il possède le double avantage de ne pas requérir de symbole supplémentaire pour ses chiffres et d'être une puissance de deux pour pouvoir grouper les chiffres.

Le décompte octal pourrait avoir été utilisé dans le passé à la place du décompte décimal, en comptant soit les trous entre les doigts ou les doigts différents des pouces. Ceci expliquerait l'homonymie en français du mot « neuf » (qui signifie aussi « nouveau »), et pourquoi le latin pour novem (« neuf ») est si proche du latin novus (« nouveau »). Il pourrait avoir le sens de nouveau nombre. Ce qui expliquerait aussi la racine semblable des mots arabes تسعٌ (« neuf ») et اتسع (« étendre »).

## Usage

La numération octale est notamment employée dans le fonctionnement des transpondeurs. Le code renvoyé est composé de quatre chiffres allant de 0 à 7.

## Notation en informatique

Un nombre qui commence par un 0 (zéro) est considéré dans certains langages comme exprimé dans le système octal. Dans ces langages, 045 est compris comme un nombre octal, qui vaut 37 en décimal. Cependant ce système est rarement utilisé de nos jours, et sa survivance provoque des confusions et des erreurs : la majorité des développeurs ignore ce principe et attend que 045 soit compris comme le nombre décimal 45. Ainsi dans les langages modernes, le préfixe 0 tend à être remplacé par des préfixes plus explicites, ou à être supprimé.

### En Ada

En Ada, un nombre peut être écrit dans une base en mettant le nombre de chiffres de la base suivi du nombre encadré de dièses (2 : binaire, 8 : octal, 10 : décimal, 16 : hexadécimal).

Exemple : A : Integer := 8#123#;

### En BASIC

Un nombre octal commence par &O.

### En C/C++

Un nombre qui commence par un 0 (zéro) ou une constante de caractère formée par '\' suivi de 1 à 3 chiffres est considéré comme exprimé dans le système octal. Cette notation n'a pas été retenue en C#, où l'octal a disparu.

Exemple : char A = '\101';

### En Java

Un nombre qui commence par un 0 (zéro) est considéré comme exprimé dans le système octal.

### En JavaScript

Le préfixe 0 pour les nombres en octal est officiellement abandonné à partir de la 5e édition d'ECMAScript, et pour éviter les confusions un nombre non nul ne peut plus être écrit en commençant par un 0. Ainsi l'écriture 045 est interdite dans cette version. Cependant, pour des raisons de compatibilité avec les versions précédentes, ce standard n'est pas forcément respecté à la lettre par tous les navigateurs, et l'interprétation des nombres en octal perdure.

### En Perl

En Perl 5, un nombre qui commence par un 0 (zéro) est considéré comme exprimé dans le système octal. En Raku, ce préfixe a été remplacé par 0o (zéro suivi de la lettre minuscule o).

### En Python

Le préfixe 0 pour les nombres en octal a été abandonné. À partir de la version 3 de Python, un nombre octal commence par 0o (zéro suivi de la lettre minuscule o) ou 0O (zéro suivi de la lettre capitale O).

### En PHP

En PHP, un nombre qui commence par un 0 est considéré comme exprimé dans le système octal. Exemple : $a = 0123;

Depuis la version 8.1, le préfixe 0o est utilisé.

