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[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
modifierLes 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
modifierLa 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
modifierUn 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
modifierEn 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
modifierUn nombre octal commence par &O.
En C/C++
modifierUn 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
modifierUn nombre qui commence par un 0 (zéro) est considéré comme exprimé dans le système octal.
En JavaScript
modifierLe 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
modifierEn 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
modifierLe 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
modifierEn 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
modifierNotes
modifier- , donc un chiffre en base 8 se code sur 3 bits.
Références
modifier- The origin of numbers - Cover Story | UNESCO Courier | Find Articles at BNET.com
- ECMAScript 5e édition: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
- « Synopsis 2 : Bits and Pieces », sur raku.org (consulté le ).
- « 2. Lexical analysis — Python v3.1.5 documentation », sur python.org (consulté le ).
- (en) The PHP Group, « PHP 8.1 Changelog New features »