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.
Réponses:
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
,0644
etc.(La réponse ironique à la raison pour laquelle il est pris en charge est "d'obtenir des votes positifs sur cette question ").
la source
"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
la source
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
rwx
bits (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
byte
devenu une norme est une autre histoire connexe difficile (2 3 bits et adressage).la source
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
la source