À quoi servent les nombres octaux (base 8)?

11

Java permet d'écrire des littéraux numériques dans les bases 2, 8, 10 et 16.

Je me demande pourquoi la base 8 est incluse, par exemple int x = 0123;?

Je pense qu'il pourrait y avoir quelque chose de similaire au fait qu'en hexadécimal, la capacité d'un octet est FF + 1 , etc.

jokinjo
la source
7
Je crois que votre question est "A quoi servent les nombres octaux?"
GetMeARemoteJob
Oui, c'est ainsi que j'aurais dû formuler la question. Merci pour toutes les réponses intéressantes. Je pensais que cela pourrait avoir une base historique, mais je n'ai pas eu l'expérience nécessaire pour mettre le doigt dessus.
jokinjo

Réponses:

16

Cette réponse a été écrite pour la question d'origine, "Pourquoi l'écriture d'un nombre en base 8 est-elle utile?"

C'était pour rendre le langage familier à ceux qui connaissaient le C etc. Ensuite, la question est de savoir pourquoi le soutenir dans ceux-ci!

Il y avait des architectures (divers PDP) qui utilisaient des mots de 18 bits de large (et d'autres utilisaient des mots de 36 bits), donc des littéraux où le chiffre est de 3 bits de large seraient utiles.

Pratiquement, le seul endroit où je l'ai vu utilisé dans le code Java est de spécifier les autorisations de style Unix, par exemple 0777, 0644etc.

(La réponse ironique à la raison pour laquelle il est pris en charge est "d'obtenir des votes positifs sur cette question ").

Andy Turner
la source
Oh, bon point, j'ai oublié les autorisations de fichiers sous Linux! Utilisation minimale des bits disponibles ... octal correspond à la facture.
sarlacii
1
@sarlacii "utilisation minimale" n'a rien à voir avec cela, le caractère "octal" d'un littéral int n'existe que dans le code source. Il est tout simplement plus facile de bloquer les autorisations désignées par un littéral octal car les chiffres correspondent directement à l'utilisateur, au groupe et à d'autres.
Andy Turner
J'ai fait ma première programmation sur un ordinateur central qui avait des mots de 60 bits et un jeu de caractères de 6 bits. Les adresses étaient de 18 bits. Bien sûr, nous avons utilisé l'octal. Lorsque j'ai rencontré hexadécimal pour la première fois, il était assez particulier de voir des lettres en chiffres.
Ole VV
@Andy, je pense toujours que c'est une utilisation minimale ... le choix de la longueur des bits n'est pas seulement lié au code. Il est également limité par les ressources. par exemple. Je pourrais choisir d'utiliser 8 bits pour coder chaque autorisation, masquer les bits non utilisés, nécessitant 3 octets, ou plutôt utiliser le minimum, 3 bits, puis coder les nombres octaux, pour n'utiliser que 1 octet et demi (en utilisant le 4e peu collant). Mais oui, c'est arbitraire une fois que vous atteignez le niveau de bit ... car vous pouvez quand même lire la valeur octale combinée en hexadécimal.
sarlacii
7

"Les nombres octaux ne sont plus aussi courants qu'avant. Cependant, Octal est utilisé lorsque le nombre de bits dans un mot est un multiple de 3. Il est également utilisé comme raccourci pour représenter les autorisations de fichiers sur les systèmes UNIX et la représentation de Numéros UTF8, etc. "

De: https://www.tutorialspoint.com/octal-number-system

vôtre
la source
3
Pas vraiment "nombre de bits dans un mot" - car il était utilisé sur les mini-ordinateurs 16 bits sous la forme d'un bit élevé 0/1 puis d'un nombre octal 5. Une meilleure description pourrait être: Utilisé lorsque la taille d'un champ dans un mot est un multiple de 8 bits. Ces mêmes ordinateurs avaient (fréquemment) 8 registres - donc un registre spécifié dans une instruction aurait un champ de 3 bits pour nommer un registre, une instruction de registre à registre aurait deux de ces champs de 3 bits; ces mêmes ordinateurs avaient souvent un opcode 3 bits, ou un opcode 3 bits avec un "échappement" (par exemple, 0111) vers un opcode 6 bits ; etc. etc.
davidbak
4

Historicy de l'informatique (science). Pour représenter un groupe de bits, une base 10 ne convient pas, la base 8 = 2 3 pour 3 bits et la base 16 = 2 4 pour 4 bits correspond mieux.

L'avantage de la base 8 est que tous les chiffres sont vraiment des chiffres: 0-7, tandis que la base 16 a des "chiffres" 0-9A-F.

Pour 8 bits d'un octet, la base 16 (hexadécimale) convient mieux et a gagné. Pour Unix base 8 octal, il est souvent utilisé pour les rwxbits (lecture, écriture, exécution) pour l'utilisateur, le groupe et autres; d'où des nombres octaux comme 0666 ou 0777.

L'hexadécimal est omniprésent, notamment parce que la taille des mots des ordinateurs est aujourd'hui de plusieurs octets. Le fait que le 8 bits soit bytedevenu une norme est une autre histoire connexe difficile (2 3 bits et adressage).

Joop Eggen
la source
0

Réponse originale de "À quoi servent les nombres octaux (base 8)?"

Utilisation courante d'Octal

  • Comme abréviation de binaire: pour les machines informatiques (comme UNIVAC 1050, PDP-8, ICL 1900, etc.), Octal a été utilisé comme abréviation de binaire car leur taille de mot est divisible par trois (chaque chiffre octal représente trois binaires chiffres). Ainsi, deux, quatre, huit ou douze chiffres pourraient afficher de manière concise un mot machine entier. Il a également réduit les coûts en permettant aux tubes Nixie, aux écrans à sept segments et aux calculatrices d'être utilisés pour les consoles d'opérateur, où les écrans binaires étaient trop complexes à utiliser, les écrans décimaux nécessitaient un matériel complexe pour convertir les radices et les écrans hexadécimaux devaient afficher plus de chiffres .

  • Représentation de mots de 16, 32 ou 62 bits:Toutes les plates-formes informatiques modernes utilisent des mots de 16, 32 ou 64 bits, divisés en huit octets. Sur de tels systèmes, trois chiffres octaux par octet seraient nécessaires, le chiffre octal le plus significatif représentant deux chiffres binaires (plus un bit de l'octet significatif suivant, le cas échéant). La représentation octale d'un mot de 16 bits nécessite 6 chiffres, mais le chiffre octal le plus significatif représente (de manière assez inélégante) un seul bit (0 ou 1). Cette représentation n'offre aucun moyen de lire facilement l'octet le plus significatif car il est étalé sur quatre chiffres octaux. Par conséquent, l'hexadécimal est plus couramment utilisé dans les langages de programmation aujourd'hui, car deux chiffres hexadécimaux spécifient exactement un octet. Certaines plates-formes avec une puissance de deux mots ont toujours des sous-mots d'instructions qui sont plus faciles à comprendre s'ils sont affichés en octal; cela inclut la famille PDP-11 et Motorola 68000. L'architecture x86 omniprésente moderne appartient également à cette catégorie, mais l'octal est rarement utilisé sur cette plate-forme.

  • Descriptions de l'encodage: Certaines propriétés de l'encodage binaire des opcodes dans l'architecture x86 moderne deviennent plus apparentes lorsqu'elles sont affichées en octal, par exemple l'octet ModRM, qui est divisé en champs de 2, 3 et 3 bits, donc octal peut être utile pour décrire ces encodages.

  • Calculs et autorisations d'accès aux fichiers: Octal est parfois utilisé dans l'informatique au lieu de l'hexadécimal, peut-être le plus souvent à l'époque moderne en conjonction avec les autorisations de fichiers sous les systèmes Unix (avec l'autorisation d'accès à chmod). Il a l'avantage de ne pas nécessiter de symboles supplémentaires sous forme de chiffres (le système hexadécimal est en base 16 et a donc besoin de six symboles supplémentaires au-delà de 0–9).

  • Affichages numériques: les nombres octaux sont également utilisés pour afficher le contenu numérique sur un écran car il contient moins de symboles utilisés pour la représentation.

  • Représentation graphique des chaînes d'octets: Certains langages de programmation (C, Perl, Postscript, etc.) ont une représentation des textes / graphiques en octal avec un caractère d'échappement \ nnn. La représentation octale est particulièrement pratique avec les octets non ASCII de UTF-8, qui codent des groupes de 6 bits, et où tout octet de début a la valeur octale \ 3nn et tout octet de continuation a la valeur octale \ 2nn.

  • Arithmétique à virgule flottante précoce: Octal a également été utilisé pour la virgule flottante dans les ordinateurs Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) et Burroughs B7700 (1972).

  • Dans les transpondeurs: les aéronefs transmettent un code, exprimé sous la forme d'un nombre à quatre octets lorsqu'il est interrogé par le radar au sol. Ce code est utilisé pour distinguer différents avions sur l'écran radar.

Lectures complémentaires: https://en.wikipedia.org/wiki/Octal

Jishan Shaikh
la source
1
J'ai aimé lire l'entrée Wikipedia, en particulier le peu sur l'utilisation des espaces entre les doigts pour compter. Cependant, pour l'essentiel, l'article pourrait être considéré comme le moteur de ma question. Comme je le soupçonnais, l'indivisibilité des tailles de mots utilisées dans l'architecture informatique actuelle rend la représentation octale inutile, et l'un des paragraphes que vous citez comme «mots de 16, 32, 64 bits…» n'est pas clair du tout. Pourriez-vous s'il vous plaît expliquer comment "l'octet le plus significatif est étalé sur quatre chiffres octaux" et "Certaines plates-formes avec une puissance de deux mots ont toujours des sous-mots d'instruction ..."
jokinjo