Je viens de me cogner la tête contre la table pendant environ 20 minutes en regardant un bogue totalement étrange en PHP, puis j'ai réalisé qu'il y avait un octal. Le <% (* & #> octal.
En bref, j'ai rempli des littéraux avec des zéros afin que le code soit aligné, je sais, grosse erreur. J'ai oublié les octals.
La question est de savoir si quelqu'un utilise les octaux pour autre chose que les autorisations de fichiers. ( chmod ugo+rwx
Personnellement, je préfère mais je comprends que s’ils doivent être générés par programme, il est utile d’utiliser des octaux.) Mais sont-ils utiles dans une autre situation?
0o
préfixe (ce qui est cohérent avec0x
et0b
peut-être un peu difficile à distinguer00
). Et depuis Python 3, les zéros supplémentaires sont une erreur de syntaxe pour éviter ce genre de bugs.Réponses:
Selon Wikipédia , les octaux ne sont plus aussi courants qu'avant. Comme d'autres l'ont déjà mentionné, dans le passé, les systèmes utilisaient un mot de 12/24/36 bits, qui est plus facilement représenté en octal qu'en hexadécimal, mais actuellement, les architectures x86 et i64 utilisent un format de 16/32/64 bits. mot, qui est plus facilement représenté en hexadécimal et carrément moche en octal.
Les utilisations actuelles incluent toutefois:
\3nn
et tout octet de continuation\2nn
)0
dans un langage de programmation qui prend en charge les octaux, comme cet utilisateur l'a écrit .Notez que les langages de programmation modernes ne prennent parfois plus en charge les octaux à cause du manque de cas d'utilisation et du risque de bugs. C # est un exemple, comme Eric Lippert l'a écrit dans la 3ème et 4ème édition de TCPL :
À propos, et juste pour référence et par curiosité, Code, Le langage caché du matériel informatique, propose une excellente explication facile à suivre sur les systèmes de numération octal et autres, pages 55 - 63 .
la source
parseInt(011)==9
Octal était largement utilisé il y a environ 50 ans par Digital Equipment Corp. (DEC) et d'autres sociétés équipées d'ordinateurs avec un mot de 12 bits (par exemple, le PDP-8) ou d'autres multiples de six, tels que 18 et 36 (par exemple, UNIVAC 1108). ). J'ai utilisé à la fois le PDP-8 et l'UNIVAC 1108 au cycle supérieur. Les caractères dans les deux machines utilisaient généralement six bits, pas 8.
Format d'instruction PDP-8 - notez que les bits sont numérotés 0 -> 11. Le bit 0 était le MSB (bit le plus significatif).
Lorsque DEC est sorti avec le PDP-11 16 bits, ils ont continué à utiliser octal dans leur documentation au lieu d’hexadécimal, contrairement à ce qu’utilisaient les autres fabricants d’ordinateurs mini équipés d’ordinateurs 16 bits à l’époque. Cela était probablement dû aux multiples champs de 3 bits contenus dans les formats d'instruction PDP-11 tels que Register, Mode et Src / Dest, qui se prêtaient au décodage sous forme de chiffre octal. (Merci à John Strohm pour l'avoir signalé.)
Il est intéressant de noter que lorsque Motorola a sorti son microprocesseur 68000, fortement influencé par le PDP-11 et contenant les mêmes champs Mode et Registre 3 bits dans les instructions, ils ont choisi d’utiliser uniquement la méthode hexadécimale dans leur documentation.
Étant donné que le PDP-11 utilisait la notation octale, les codes d'autorisation d'origine pour Unix, qui figuraient pour la première fois sur le PDP-11, utilisaient également l'octal. Cet héritage persiste sous Linux, où la commande chmod utilise toujours octal pour spécifier chacun des champs à trois bits «rwx».
Quelques autres astuces - CompuServe, qui était un service en ligne d'accès à distance très utilisé dans les années 1980 et au début des années 1990 (avant d'être occulté par AOL), fonctionnait sur les mini-ordinateurs DEC, du moins à l'origine. Tous les identifiants d’utilisateur étaient numériques, et à un moment donné, j’ai fait observer qu’ils n’incluaient jamais de 8 ou de 9, ils étaient donc en octal. Mon ancien numéro d'identification CIS était 70205.
la source
Heathkit les utilisait pour le panneau avant de leur H-8 et pour les listes en langage assembleur de leur logiciel de panneau avant (appelé PAM-8). Je me sors, je sais.
De nos jours, les octaux sont très rares. tout le monde semble utiliser hex. Mais les nombres ressemblent toujours à des nombres en octal et vous n'avez pas besoin d'une rangée supplémentaire de clés pour les chiffres de A à F.
la source
Octal est notamment utilisé parce que c'est la base la plus grande qui est une puissance de 2 pour laquelle vous n'avez pas besoin de caractères spéciaux - en d'autres termes, tous les chiffres peuvent être numériques. La base 16 (la suivante à partir de la base 8) nécessite des chiffres non numériques (généralement A, B, C, D, E, F).
la source
J'utilise octal tous les jours. Chaque fois que j'ai besoin de modifier un fichier, j'utilise octal (je date d'avance la notation u + r ...). Chaque fois que je veux incorporer un caractère de contrôle dans une chaîne, j'utilise octal ... (Oui, je pourrais utiliser hex, mais octal est ce que j'utilise).
la source
Tous ceux qui ont besoin d’exprimer des combinaisons de bits regroupés par trois.
Pourquoi est-ce que quelqu'un utilise l'hexagone?
Les choses qui me viennent à l’esprit sont exprimées en nombres octaux:
ncurses
bibliothèquela source
7 * 6
ou07 * 06
? Nous utilisons des nombres décimaux pour représenter les nombres car nous pouvons mieux les gérer et des hexa pour représenter des nombres très proches de la façon dont la machine les stocke. Et nous le faisons beaucoup. Ce site est plein de preuves.À l'époque où je travaillais sur les ordinateurs centraux CDC (avec un mot de 60 bits, un mot de 12 bits pour le fichier PPU), toutes les sauvegardes de base et autres opérations étaient effectuées en octal (20 chiffres octaux par mot, 4 par mot PPU).
la source
Comme en hexadécimal, la notation octale est parfois utilisée pour spécifier les codes de caractères. Il peut être utile pour la même raison que l'hexadécimal: c'est plus compact que le binaire, mais très facile à traduire en binaire dans votre tête.
la source
Comme Hex, les nombres octaux sont faciles à convertir à partir de binaires. Il suffit de grouper les chiffres binaires par groupes de trois, en commençant par la droite.
la source
Nan. Je ne les ai jamais utilisés. Même pas pour définir les permissions de fichiers, parce que je le fais si rarement que j'ai du mal à le lire.
Alors oui, il y a l'avantage évident de la conversion depuis et vers le binaire.
Cependant, comme l'a déjà souligné @Mason, hex est beaucoup plus "naturel", car 2 chiffres hexadécimaux forment un octet. Très pratique pour représenter les couleurs RGB / ARGB 24/32 bits, les adresses IP, les masques d'octets, etc. Octal n'est pas vraiment pratique, car vous avez rarement des scénarios dans lesquels vous travaillez en termes de groupes 3 bits.
Les autorisations de fichiers sont en fait la seule chose à laquelle je pouvais penser. Et s’il n’ya pas de domaine d’utilisation, je doute qu’il en existe un jour. Depuis 20 ans, l'espace est devenu si peu coûteux qu'il est devenu très rare de regrouper des informations aussi étroitement, au détriment de l'alignement, de la facilité d'utilisation et de l'extensibilité.
la source
Un peu de côté, mais une utilisation publique est dans le métro de Londres. Chaque train a à la fois une identité physique et une identité distincte dans les horaires qui sont affichés en service - voir ici: https://upload.wikimedia.org/wikipedia/commons/4/49/LUL-S-Stock-at -Watford.jpg (notez le 402 en haut de l'écran de destination). Bien que les composants électroniques des affichages soient basés sur des décimales standard standard, vous ne voyez jamais les chiffres 8 ou 9 car ils sont liés au matériel hérité octal existant dans le système de signalisation.
la source