Octal - Octal

Systèmes numériques , bits et code Gray
hexagone déc oct 3 2 1 0 étape
0 hexagone 00 déc 00 octobre 0 0 0 0 g0
1 hexagone 01 déc. 01 octobre 0 0 0 1 h1
2 hexagones 02 déc 02 octobre 0 0 1 0 j3
3 hexagones 03 déc 03 octobre 0 0 1 1 je2
4 hexagones 04 déc 04 octobre 0 1 0 0 m7
5 hexagones 05 déc 05 octobre 0 1 0 1 m6
6 hexagones 06 déc 06 octobre 0 1 1 0 k4
7 hexagones 07 déc 07 octobre 0 1 1 1 je5
8 hexagones 08 déc. 10 octobre 1 0 0 0 vF
9 hexagones 09 déc. 11 octobre 1 0 0 1 vousE
Un hexagone 10 déc 12 octobre 1 0 1 0 sC
B hexagone 11 déc. 13 octobre 1 0 1 1 t
C hex 12 déc 14 octobre 1 1 0 0 o8
D hex 13 déc. 15 octobre 1 1 0 1 p9
E hexagone 14 déc 16 octobre 1 1 1 0 rB
F hex 15 déc. 17 octobre 1 1 1 1 qUNE

Le système de numération octal , ou oct en abrégé, est le système de numération en base -8, et utilise les chiffres de 0 à 7, c'est-à-dire que 10 représente 8 en décimal et 100 représente 64 en décimal. Cependant, l'anglais utilise un système de langue numérique en base 10 et donc un vrai système octal peut utiliser une langue différente pour éviter toute confusion avec le système décimal.

Dans le système décimal, chaque place est une puissance de dix . Par exemple:

Dans le système octal, chaque place est une puissance de huit. Par exemple:

En effectuant le calcul ci-dessus dans le système décimal familier, nous voyons pourquoi 112 en octal est égal à 64+8+2 = 74 en décimal.

Les nombres octaux peuvent être facilement convertis à partir de représentations binaires (similaires à un système de numération quaternaire ) en regroupant des chiffres binaires consécutifs en groupes de trois (en commençant par la droite, pour les entiers). Par exemple, la représentation binaire pour décimal 74 est 1001010. Deux zéros peuvent être ajoutés à gauche : (00)1 001 010 , correspondant aux chiffres octaux 1 1 2 , donnant la représentation octale 112.

La table de multiplication octale
× 1 2 3 4 5 6 7 dix
1 1 2 3 4 5 6 7 dix
2 2 4 6 dix 12 14 16 20
3 3 6 11 14 17 22 25 30
4 4 dix 14 20 24 30 34 40
5 5 12 17 24 31 36 43 50
6 6 14 22 30 36 44 52 60
7 7 16 25 34 43 52 61 70
dix dix 20 30 40 50 60 70 100

Usage

Par les Amérindiens

  • La langue Yuki en Californie a un système octal car les locuteurs comptent en utilisant les espaces entre leurs doigts plutôt que les doigts eux-mêmes.
  • Les langues paméennes au Mexique ont également un système octal, car leurs locuteurs comptent sur les jointures d'un poing fermé.

Par les Européens

  • Il a été suggéré que le mot proto-indo-européen (PIE) reconstruit pour "neuf" pourrait être lié au mot PIE pour "nouveau". Sur cette base, certains ont émis l'hypothèse que les proto-Indo-européens utilisaient un système de nombre octal, bien que les preuves à l'appui soient minces.
  • En 1668, John Wilkins dans un essai vers un caractère réel et un langage philosophique a proposé l'utilisation de la base 8 au lieu de 10 "parce que la voie de la dichotomie ou de la bipartition étant le type de division le plus naturel et le plus facile, ce nombre est capable de cela vers le bas à unir".
  • En 1716, le roi Charles XII de Suède a demandé à Emanuel Swedenborg d'élaborer un système de numération basé sur 64 au lieu de 10. Swedenborg a cependant fait valoir que pour les personnes moins intelligentes que le roi, une si grande base serait trop difficile et a plutôt proposé 8 comme base . En 1718, Swedenborg écrivit (mais ne publia pas) un manuscrit : « En ny rekenkonst som om vexlas wid Thalet 8 i stelle then wanliga wid Thalet 10 » (« Une nouvelle arithmétique (ou art de compter) qui change au chiffre 8 au lieu de l'habituel au numéro 10"). Les nombres 1-7 y sont désignés par les consonnes l, s, n, m, t, f, u (v) et zéro par la voyelle o. Ainsi 8 = "lo", 16 = "so", 24 = "no", 64 = "loo", 512 = "looo" etc. Les nombres avec des consonnes consécutives sont prononcés avec des voyelles entre les deux conformément à une règle spéciale.
  • Écrivant sous le pseudonyme « Hirossa Ap-Iccim » dans The Gentleman's Magazine , (Londres) juillet 1745, Hugh Jones proposa un système octal pour les pièces, poids et mesures britanniques. « Alors que la raison et la commodité nous indiquent un étalon uniforme pour toutes les quantités ; que j'appellerai l' étalon géorgien ; et c'est seulement de diviser chaque entier dans chaque espèce en huit parties égales, et chaque partie encore en 8 particules réelles ou imaginaires, Car bien que toutes les nations comptent universellement par dizaines (à l'origine occasionné par le nombre de chiffres sur les deux mains) pourtant 8 est un nombre beaucoup plus complet et commode, puisqu'il est divisible en moitiés, quarts et demi-quarts (ou unités) sans une fraction, dont subdivision dix est uncapable .... « Dans un traité plus tard le calcul Octave (1753) Jones a conclu: » arithmétique par Octaves semble le plus agréable à la nature des choses, et par conséquent peuvent être appelés L'arithmétique naturelle en opposition à celle actuellement utilisée, par des décennies ; qui peut être considérée comme l'arithmétique artificielle. »
  • En 1801, James Anderson a critiqué les Français pour avoir fondé le système métrique sur l'arithmétique décimale. Il a suggéré la base 8, pour laquelle il a inventé le terme octal . Son travail était conçu comme des mathématiques récréatives, mais il suggéra un système purement octal de poids et de mesures et observa que le système existant d' unités anglaises était déjà, dans une mesure remarquable, un système octal.
  • Au milieu du 19ème siècle, Alfred B. Taylor a conclu que « Notre octonary [base 8] radix est donc, au - delà de toute comparaison , le » meilleur possible un « pour un système arithmétique. » La proposition comprenait une notation graphique pour les chiffres et de nouveaux noms pour les nombres, suggérant que nous devrions compter " un , du , the , fo , pa , se , ki , unty , unty-un , unty-du " et ainsi de suite, avec des multiples successifs de huit nommés « unty , duty , thety , foty , paty , sety , kity et under . Ainsi, par exemple, le nombre 65 (101 en octal) serait prononcé en octonaire comme under-un . Taylor a également republié certains des travaux de Swedenborg sur l'octal en annexe des publications citées ci-dessus.

Dans les ordinateurs

Octal est devenu largement utilisé en informatique lorsque des systèmes tels que les mainframes UNIVAC 1050 , PDP-8 , ICL 1900 et IBM utilisaient des mots de 6 bits , 12 bits , 24 bits ou 36 bits . Octal était une abréviation idéale de binaire pour ces machines car leur taille de mot est divisible par trois (chaque chiffre octal représente trois chiffres binaires). 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 l'utilisation de tubes Nixie , d' affichages à sept segments et de calculatrices pour les consoles d'opérateur, où les affichages binaires étaient trop complexes à utiliser, les affichages décimaux nécessitaient un matériel complexe pour convertir les radices et les affichages hexadécimaux nécessaires pour afficher plus de chiffres .

Cependant, toutes les plates-formes informatiques modernes utilisent des mots de 16, 32 ou 64 bits, divisés en octets de huit bits . 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 ne représente (de manière assez inélégante) qu'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 taille de mot puissance de deux ont encore des sous-mots d'instruction 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, bien que certaines propriétés de l'encodage binaire des opcodes deviennent plus évidentes lorsqu'elles sont affichées en octal, par exemple l'octet ModRM, qui est divisé en des champs de 2, 3 et 3 bits, donc octal peut être utile pour décrire ces encodages. Avant la disponibilité des assembleurs , certains programmeurs coderaient à la main les programmes en octal ; par exemple, Dick Whipple et John Arnold ont écrit Tiny BASIC Extended directement en code machine, en utilisant octal.

Octal est parfois utilisé en 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 (voir chmod ). Il a l'avantage de ne nécessiter aucun symbole supplémentaire sous forme de chiffres (le système hexadécimal est en base 16 et nécessite donc six symboles supplémentaires au-delà de 0-9). Il est également utilisé pour les affichages numériques.

Dans les langages de programmation, les littéraux octaux sont généralement identifiés par une variété de préfixes , y compris le chiffre 0, les lettres oou q, la combinaison chiffre-lettre 0o, ou le symbole &ou $. Dans la convention Motorola , les nombres octaux sont préfixés par @, tandis qu'une lettre minuscule (ou majuscule) oou qest ajoutée comme suffixe suivant la convention Intel . Dans Concurrent DOS , Multiuser DOS et REAL/32 ainsi que dans DOS Plus et DR-DOS, diverses variables d'environnement comme $CLS , $ON , $OFF , $HEADER ou $FOOTER prennent en charge une \nnnnotation de nombre octal, et DR-DOS DEBUG utilise \pour préfixer les nombres octaux aussi.

Par exemple, le littéral 73 (base 8) peut être représenté par 073, o73, q73, 0o73, \73, @73, &73, $73ou 73odans différentes langues.

Les langues plus récentes ont abandonné le préfixe 0, car les nombres décimaux sont souvent représentés avec des zéros non significatifs. Le préfixe a qété introduit pour éviter que le préfixe ne osoit confondu avec un zéro, tandis que le préfixe a 0oété introduit pour éviter de commencer un littéral numérique par un caractère alphabétique (comme oou q), car ceux-ci pourraient entraîner la confusion du littéral avec un nom de variable. Le préfixe 0osuit également le modèle défini par le préfixe 0xutilisé pour les littéraux hexadécimaux en langage C ; il est supporté par Haskell , OCaml , Python à partir de la version 3.0, Raku , Ruby , Tcl à partir de la version 9, PHP à partir de la version 8.1 et il est destiné à être supporté par ECMAScript 6 (le préfixe 0signifiait à l'origine base 8 en JavaScript mais pourrait prêter à confusion, elle a donc été déconseillée dans ECMAScript 3 et supprimée dans ECMAScript 5).

Nombres octaux utilisés dans certains langages de programmation (C, Perl , PostScript ...) doit être échappé comme \nnn. La représentation octale peut être particulièrement pratique avec les octets non ASCII d' UTF-8 , qui codent des groupes de 6 bits, et où tout octet de début a une valeur octale \3nnet tout octet de continuation a une valeur octale \2nn.

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).

En aéronautique

Les transpondeurs des avions transmettent un code , exprimé sous la forme d'un nombre à quatre chiffres octaux, lorsqu'ils sont interrogés par un radar au sol. Ce code est utilisé pour distinguer différents aéronefs sur l'écran radar.

Conversion entre bases

Conversion décimal en octal

Méthode de division euclidienne successive par 8

Pour convertir des nombres entiers décimaux en octaux, divisez le nombre d'origine par la plus grande puissance possible de 8 et divisez les restes par des puissances successivement plus petites de 8 jusqu'à ce que la puissance soit 1. La représentation octale est formée par les quotients, écrits dans l'ordre généré par le algorithme. Par exemple, pour convertir 125 10 en octal :

125 = 8 2 × 1 + 61
61 = 8 1 × 7 + 5
5 = 8 0 × 5 + 0

Par conséquent, 125 10 = 175 8 .

Un autre exemple:

900 = 8 3 × 1 + 388
388 = 8 2 × 6 + 4
4 = 8 1 × 0 + 4
4 = 8 0 × 4 + 0

Par conséquent, 900 10 = 1604 8 .

Méthode de multiplication successive par 8

Pour convertir une fraction décimale en octal, multipliez par 8 ; la partie entière du résultat est le premier chiffre de la fraction octale. Répétez le processus avec la partie fractionnaire du résultat, jusqu'à ce qu'elle soit nulle ou dans des limites d'erreur acceptables.

Exemple : Convertir 0,1640625 en octal :

0,1640625 × 8 = 1,3125 = 1 + 0,3125
0,3125 × 8 = 2,5 = 2 + 0,5
0,5 × 8 = 4,0 = 4 + 0

Par conséquent, 0,1640625 10 = 0,124 8 .

Ces deux méthodes peuvent être combinées pour gérer les nombres décimaux avec des parties entières et fractionnaires, en utilisant la première sur la partie entière et la seconde sur la partie décimale.

Méthode de duplication successive

Pour convertir les nombres décimaux entiers en octaux, préfixez le nombre avec "0.". Effectuez les étapes suivantes tant que les chiffres restent sur le côté droit de la base : doublez la valeur sur le côté gauche de la base, en utilisant des règles octales , déplacez le point de base d'un chiffre vers la droite, puis placez la valeur doublée sous la valeur actuelle valeur de sorte que les points de base s'alignent. Si le point de base déplacé croise un chiffre 8 ou 9, convertissez-le en 0 ou 1 et ajoutez le report au chiffre suivant vers la gauche de la valeur actuelle. Ajoutez octalement ces chiffres à gauche de la base et déposez simplement ces chiffres vers la droite, sans modification.

Exemple:

 0.4 9 1 8 decimal value
  +0
 ---------
   4.9 1 8
  +1 0
  --------
   6 1.1 8
  +1 4 2
  --------
   7 5 3.8
  +1 7 2 6
  --------
 1 1 4 6 6. octal value

Conversion octale en décimale

Pour convertir un nombre k en décimal, utilisez la formule qui définit sa représentation en base 8 :

Dans cette formule, a i est un chiffre octal individuel en cours de conversion, où i est la position du chiffre (à partir de 0 pour le chiffre le plus à droite).

Exemple : Convertir 764 8 en décimal :

764 8 = 7 × 8 2 + 6 × 8 1 + 4 × 8 0 = 448 + 48 + 4 = 500 10

Pour les nombres octaux à deux chiffres, cette méthode revient à multiplier le premier chiffre par 8 et à ajouter le deuxième chiffre pour obtenir le total.

Exemple : 65 8 = 6 × 8 + 5 = 53 10

Méthode de duplication successive

Pour convertir les octaux en décimaux, préfixez le nombre avec "0.". Effectuez les étapes suivantes tant que les chiffres restent sur le côté droit de la base : doublez la valeur sur le côté gauche de la base, en utilisant des règles décimales , déplacez le point de base d'un chiffre vers la droite, puis placez la valeur doublée sous la valeur actuelle valeur de sorte que les points de base s'alignent. Soustrayez décimalement ces chiffres à gauche de la base et déposez simplement ces chiffres vers la droite, sans modification.

Exemple:

 0.1 1 4 6 6  octal value
  -0
 -----------
   1.1 4 6 6
  -  2
  ----------
     9.4 6 6
  -  1 8
  ----------
     7 6.6 6
  -  1 5 2
  ----------
     6 1 4.6
  -  1 2 2 8
  ----------
     4 9 1 8. decimal value

Conversion octale en binaire

Pour convertir l'octal en binaire, remplacez chaque chiffre octal par sa représentation binaire.

Exemple : Convertissez 51 8 en binaire :

5 8 = 101 2
1 8 = 001 2

Par conséquent, 51 8 = 101 001 2 .

Conversion binaire en octal

Le processus est l'inverse de l'algorithme précédent. Les chiffres binaires sont regroupés par trois, en partant du bit le moins significatif et en procédant vers la gauche et vers la droite. Ajoutez des zéros de début (ou des zéros de fin à droite de la virgule décimale) pour remplir le dernier groupe de trois si nécessaire. Remplacez ensuite chaque trio par le chiffre octal équivalent.

Par exemple, convertissez le binaire 1010111100 en octal :

001 010 111 100
1 2 7 4

Par conséquent, 1010111100 2 = 1274 8 .

Convertir le binaire 11100.01001 en octal :

011 100  .  010 010
3 4  .  2 2

Par conséquent, 11100.01001 2 = 34,22 8 .

Conversion octale en hexadécimale

La conversion se fait en deux étapes en utilisant le binaire comme base intermédiaire. Octal est converti en binaire puis binaire en hexadécimal, en regroupant les chiffres par quatre, qui correspondent chacun à un chiffre hexadécimal.

Par exemple, convertissez l'octal 1057 en hexadécimal :

En binaire :
1 0 5 7
001 000 101 111
puis en hexadécimal :
0010 0010 1111
2 2 F

Par conséquent, 1057 8 = 22F 16 .

Conversion hexadécimale en octale

La conversion hexadécimale en octal se fait en convertissant d'abord les chiffres hexadécimaux en valeurs binaires à 4 bits, puis en regroupant les bits binaires en chiffres octaux à 3 bits.

Par exemple, pour convertir 3FA5 16 :

En binaire :
3 F UNE 5
0011 1111 1010 0101
puis en octal :
0 011 111 110 100 101
0 3 7 6 4 5

Par conséquent, 3FA5 16 = 37645 8 .

Nombres réels

Fractions

En raison du fait qu'elles n'ont que des facteurs de deux, de nombreuses fractions octales ont des chiffres répétés, bien que ceux-ci aient tendance à être assez simples :

Base décimale
Facteurs premiers de la base : 2 , 5
Facteurs premiers d'un au-dessous de la base : 3
Facteurs premiers d'un au-dessus de la base : 11
Autres facteurs premiers : 7 13 17 19 23 29 31
Base octale
Facteurs premiers de la base : 2
Facteurs premiers d'un au-dessous de la base : 7
Facteurs premiers d'un au-dessus de la base : 3
Autres facteurs premiers : 5 13 15 21 23 27 35 37
Fraction Facteurs premiers
du dénominateur
Représentation positionnelle Représentation positionnelle Facteurs premiers
du dénominateur
Fraction
1/2 2 0,5 0,4 2 1/2
1/3 3 0. 3333... = 0. 3 0. 2525... = 0. 25 3 1/3
1/4 2 0,25 0,2 2 1/4
1/5 5 0,2 0. 1463 5 1/5
1/6 2 , 3 0,1 6 0,1 25 2 , 3 1/6
1/7 7 0. 142857 0. 1 7 1/7
1/8 2 0,125 0,1 2 1/10
1/9 3 0. 1 0. 07 3 1/11
1/10 2 , 5 0,1 0,0 6314 2 , 5 1/12
1/11 11 0. 09 0. 0564272135 13 1/13
1/12 2 , 3 0,08 3 0,0 52 2 , 3 1/14
1/13 13 0. 076923 0. 0473 15 1/15
1/14 2 , 7 0,0 714285 0.0 4 2 , 7 1/16
1/15 3 , 5 0,0 6 0. 0421 3 , 5 1/17
1/16 2 0,0625 0,04 2 1/20
1/17 17 0. 0588235294117647 0. 03607417 21 1/21
1/18 2 , 3 0,0 5 0,0 34 2 , 3 1/22
1/19 19 0. 052631578947368421 0. 032745 23 1/23
1/20 2 , 5 0,05 0,0 3146 2 , 5 1/24
1/21 3 , 7 0. 047619 0. 03 3 , 7 1/25
1/22 2 , 11 0,0 45 0,0 2721350564 2 , 13 1/26
1/23 23 0. 0434782608695652173913 0. 02620544131 27 1/27
1/24 2 , 3 0,041 6 0,0 25 2 , 3 1/30
1/25 5 0,04 0. 02436560507534121727 5 1/31
1/26 2 , 13 0,0 384615 0,0 2354 2 , 15 1/32
1/27 3 0. 037 0. 022755 3 1/33
1/28 2 , 7 0,03 571428 0,0 2 2 , 7 1/34
1/29 29 0. 0344827586206896551724137931 0. 0215173454106475626043236713 35 1/35
1/30 2 , 3 , 5 0,0 3 0.0 2104 2 , 3 , 5 1/36
1/31 31 0. 032258064516129 0. 02041 37 1/37
1/32 2 0.03125 0,02 2 1/40

Nombres irrationnels

Le tableau ci-dessous donne les développements de certains nombres irrationnels courants en décimal et octal.

Nombre Représentation positionnelle
Décimal Octal
2 (la longueur de la diagonale d'un carré unitaire ) 1.414 213 562 373 095 048 ... 1.3240 4746 3177 1674...
3 (la longueur de la diagonale d'un cube unité ) 1.732 050 807 568 877 293 ... 1.5666 3656 4130 2312...
5 (la longueur de la diagonale d'un rectangle 1×2 ) 2.236 067 977 499 789 696 ... 2.1706 7363 3457 7224...
φ (phi, le nombre d' or = (1+ 5 )/2 ) 1.618 033 988 749 894 848 ... 1.4743 3571 5627 7512...
π (pi, le rapport de la circonférence au diamètre d'un cercle) 3,141 592 653 589 793 238 462 643
383 279 502 884 197 169 399 375 105 ...
3.1103 7552 4210 2643...
e (la base du logarithme népérien ) 2.718 281 828 459 045 235 ... 2.5576 0521 3050 5355...

Voir également

Les références

Liens externes