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[N 1] 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 »)[1].

Nombres premiers modifier

Les 20 premiers nombres premiers en octal sont: 2, 3, 5, 7, 15, 21, 23, 27, 35, 37, 45, 51, 53, 57, 65, 73, 75, 103, 107, 111

Usage modifier

 
Panneau de commande d'un transpondeur moderne, avec des boutons de saisie en système de numération octal (de 0 à 7) pour composer le code d'identification de l’aéronef.

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 modifier

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 modifier

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 modifier

Un nombre octal commence par &O.

En C/C++ modifier

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 modifier

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

En JavaScript modifier

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[2]. 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 modifier

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)[3].

En Python modifier

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)[4].

En PHP modifier

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é[5].

Notes et références modifier

Notes modifier

  1.  , donc un chiffre en base 8 se code sur 3 bits.

Références modifier