47 votes

Les littéraux des nombres octaux : Quand ? Pourquoi ? Jamais ?

Je n'ai jamais utilisé de nombres octaux dans mon code et je n'ai jamais rencontré de code qui l'utilisait (malgré l'hexadécimal et les manipulations de bits).

J'ai commencé à programmer en C/C++ vers 1994, alors peut-être suis-je trop jeune pour cela ? Les codes plus anciens utilisent-ils l'octal ? Le C inclut un support pour ceux-ci en ajoutant un 0, mais où est le code qui utilise ces nombres littéraux en base 8 ?

46voto

Ben Collins Points 11318

J'ai récemment dû écrire un code de protocole réseau qui accède à des champs de 3 bits. L'octal est très utile pour déboguer cela.

Juste pour l'effet, pouvez-vous me dire ce que sont les champs de 3 bits de ceci ?

0x492492

D'autre part, ce même nombre en octal :

022222222

Maintenant, enfin, en binaire (par groupes de 3) :

010 010 010 010 010 010 010 010

34voto

Chris AtLee Points 3656

Le seul endroit où je rencontre des littéraux octaux ces jours-ci est lorsque je traite les bits de permission sur les fichiers sous Linux, qui sont normalement représentés par 3 chiffres octaux, où chaque chiffre représente les permissions pour le propriétaire du fichier, le groupe et les autres utilisateurs respectivement.

Par exemple, 0755 (également 755 avec la plupart des outils de ligne de commande) signifie que le propriétaire du fichier a toutes les autorisations (lecture, écriture, exécution), et que le groupe et les autres utilisateurs ont seulement les autorisations de lecture et d'exécution.

En représentant ces bits en octal, il est plus facile de comprendre quelles sont les permissions définies. Vous pouvez dire en un coup d'œil ce que signifie 0755, mais pas 493 ou 0x1ed.

28voto

Adam Davis Points 47683

De Wikipedia

Au moment où l'octal est devenu est devenu largement utilisé en informatique, les systèmes tels que les mainframes IBM utilisaient des mots de 24 bits (ou 36 bits). L'octal était une abréviation idéale du binaire pour ces machines car huit (ou douze) chiffres pouvaient d'afficher de manière concise un mot entier de la machine mot machine (chaque chiffre octal couvrant trois chiffres binaires). Cela a également permis de réduire les coûts en permettant aux tubes Nixie, aux sept segments sept segments, et des calculatrices d'être utilisés pour les consoles d'opérateurs ; là où les affichages binaires étaient trop complexes pour complexes à utiliser, les affichages décimaux nécessitaient un matériel complexe pour convertir les radix, et les affichages hexadécimaux devaient afficher des lettres.

Toutes les plateformes informatiques modernes Cependant, toutes les plateformes informatiques modernes utilisent des mots de 16, 32 ou 64 bits. 64 bits, avec huit bits constituant un octet. Sur ces systèmes, trois chiffres octaux seraient nécessaires, le chiffre octal le plus chiffre octal le plus significatif ne représente que deux chiffres binaires chiffres binaires (et, dans une série, le chiffre même chiffre octal représenterait un chiffre chiffre binaire de l'octet suivant). C'est pourquoi l'hexadécimal est plus communément utilisé aujourd'hui dans les langages de programmation, puisqu'un chiffre hexadécimal couvre quatre chiffres binaires et que toutes les plateformes informatiques modernes ont des mots machine qui sont divisibles de manière égale par quatre. Certaines plates-formes avec une taille de mot puissance-deux ont encore des sous-mots d'instruction qui sont plus faciles à comprendre s'ils sont affichés en octal ; ceci inclut le PDP-11. L'architecture x86, omniprésente de nos jours, appartient à cette catégorie. appartient à cette catégorie catégorie, mais l'octal n'est presque jamais jamais utilisé sur cette plate-forme.

23voto

Tim Points 4953

Je n'ai jamais utilisé de nombres octaux dans mon code et je n'ai jamais rencontré de code qui l'utilisait.

Je parie que oui. Selon la norme, les littéraux numériques qui commencent par zéro sont octaux. Cela inclut, trivialement, 0 . Chaque fois que vous avez utilisé ou vu un zéro littéral, il s'agissait d'un octal. Étrange mais vrai :-)

8voto

Samuel Lee Points 81

L'aviation commerciale utilise des "étiquettes" octales (essentiellement des identifiants de type de message) dans la vénérable norme de bus Arinc 429. Il est donc intéressant de pouvoir spécifier les valeurs des labels en octal lors de l'écriture de code pour les applications avioniques...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X