Pourquoi octal et hexadécimal? Les ordinateurs utilisent des nombres décimaux binaires et humains


16

Pourquoi utilisons-nous d'autres bases qui ne sont ni binaires (pour les ordinateurs) ni décimales (pour les humains)?

Les ordinateurs finissent par les représenter en binaire, et les humains préfèrent fortement obtenir leur représentation décimale. Pourquoi ne pas s'en tenir à ces deux bases?


J'ai tendance à penser qu'il n'y a aucune raison valable d'utiliser un hex ou quoi que ce soit avec une grande quantité de glyphes pour les nombres. Plus encore, j'ai tendance à penser que le représentant binaire peut remplacer d'autres notations pour le cas général à l'avenir.
Mikhail V

@MikhailV Une représentation hexadécimale est beaucoup plus concise qu'une représentation binaire. Je dirais que c'est une raison assez solide d'utiliser un plus grand nombre de glyphes que, disons, 2.
Ben Jones

Réponses:


19

Les nombres octaux (base-8) et hexadécimaux (base-16) sont un compromis raisonnable entre le système binaire (base-2) utilisé par les ordinateurs et le système décimal (base-10) que la plupart des humains utilisent.

Les ordinateurs ne sont pas bons pour plusieurs symboles, donc la base 2 (où vous n'avez que 2 symboles) leur convient tandis que les chaînes plus longues, les nombres avec plus de chiffres, sont moins problématiques. Les humains sont très bons avec plusieurs symboles, mais ne se souviennent pas très bien des longues chaînes.

Octal et l' utilisation hex l'avantage humain qu'ils peuvent travailler avec beaucoup de symboles alors qu'il est de retour encore facilement convertible et vient entre binaire, parce que chaque chiffre hexadécimal représente 4 chiffres binaires ( ) et chaque chiffre octal représente 3 ( 8 = 2 3 ). Je pense que hex l'emporte sur octal car il peut facilement être utilisé pour représenter des octets et des nombres 16/32/64 bits.16=248=23


8
À titre d'exemple, considérons les valeurs hexadécimales de RVB. Il est facile de se rappeler que le blanc est #FFFFFF. Il est plus difficile de se rappeler que le blanc est 16777215 en décimal. Vous souhaitez supprimer le composant rouge de # EF439A? Vous obtenez # 00439A, c'est-à-dire que vous changez simplement les deux premiers chiffres en 0. En décimal, vous devez soustraire 15663104. Bonne chance pour vous en souvenir.
jmite

3
Pour être précis, les couleurs en notation décimale utiliseraient des triplets, et le blanc serait (255, 255, 255). Nous concaténons les valeurs hexadécimales simplement parce qu'elles sont toujours à 2 chiffres. Nous pourrions faire la même chose avec des décimales en utilisant des 0, puis le blanc serait 255255255 au lieu de 16777215.
Spidey

@Spidey Exactement. De plus, mon cerveau peut analyser quelque chose comme (127,255,255) beaucoup plus facilement et je peux même deviner à quoi ressemblera la couleur, car je peux voir la proportion de la quantité d'encre et je n'ai pas à la calculer en hexadécimal dans ma tête.
Mikhail V

13

Nous les utilisons pour plus de commodité et de brièveté.

Hex et Oct sont des représentations compressées vraiment binaires. Hex en particulier est bien adapté aux formes condensées d'adresses mémoire. Chaque chiffre d'octet correspond directement à 3 bits binaires et chaque chiffre hexadécimal à 4 bits binaires. Ceci est le résultat des bases (8 et 16) étant des puissances de 2 ( et 2 4 ). Par exemple, je peux écrire le binaire 01101001 en hexadécimal 69 ou si je le prolonge avec un zéro de tête en oct 151 .23240110100169151

Supposons donc que vous ayez besoin d'une adresse mémoire 64 bits. Vous pouvez soit regarder les 64 bits binaires, soit les condenser à 16 chiffres hexadécimaux. Souvent, vous n'avez pas besoin de comparer quelques adresses pour voir si elles sont identiques ou contiguës. Préférez-vous regarder 64 bits ou 16 chiffres?


5
Octal a l'avantage de ne pas ajouter de symboles numériques et aurait pu être plus pratique à l'époque des caractères à 6 bits (et des mots courants sans puissance de deux, par exemple, PDP-8 à 12 bits, PDP à 18 bits- 1 [registres d'adresses pour CDC 6x00], registres d'opérandes PDP-6 36 bits, CDP 6x00). Le passage aux octets / octets et à la puissance de deux mots rend l'hexadécimal plus attrayant.
Paul A. Clayton

"Préférez-vous regarder 64 bits ou 16 chiffres?" Je regarderais certainement les bits groupés. Mais de couse pas en notation "01", ce qui est moche et me fait mal aux yeux. Et je ne dis même pas combien d'hex me fait mal aux yeux.
Mikhail V

@MikhailV: Qu'entendez-vous par «notation« 01 »»? Vous dites que vous préférez regarder les bits mais pas dans la notation «01» - quelle notation utiliseriez-vous ensuite. Si vous dites que l'hexagone vous fait mal aux yeux, je ne peux m'empêcher de penser que vous pourriez avoir pratiqué un peu plus en décimal qu'en hexadécimal. (En fait, je pensais que c'était du sexe (en solo) qui était mauvais pour vos yeux, mais c'est une autre histoire.)
PJTraill

Je préfère cela à la réponse actuellement la plus populaire de dtech car elle met l'accent sur la facilité d'utilisation, mais vous avez peut-être souligné que non seulement les représentations plus courtes mais aussi la plus grande variété de chiffres permettent de savoir plus facilement où vous êtes lorsque vous lisez un nombre en hexadécimal ou octal.
PJTraill

@ PaulA.Clayton: bons points; un autre avantage sur le PDP-11 était que même si les mots (unité naturelle d'opérations) étaient de 16 bits, la plupart des codes d'instructions tombaient naturellement dans une opération de 2 bits et quatre groupes de 3 bits représentant le numéro de registre et le mode d'adresse, tous deux ayant 8 possibilités, de deux arguments. Mon préféré: 014747 = MOV - (PC), - (PC), qui remplit la mémoire de lui-même (si autorisé).
PJTraill

5

Les nombres binaires dans le texte sont une perte d'espace.

252n-1


2

introduction

Comme déjà mentionné par d'autres réponses, il peut y avoir différentes notations pour différents objectifs et contraintes. Les notations sont en fait un encodage comme une séquence de caractères, et nous savons par l'étude des algorithmes et de la structure des données qu'il existe de nombreuses façons de coder des concepts abstraits, une liste ou un ensemble par exemple, selon ce que nous voulons en faire. . Dans ce cas, c'est surtout la commodité algorithmique.

En ce qui concerne la représentation des nombres, il en va de même. À l'intérieur de l'ordinateur, tout est binaire au niveau le plus bas, bien que des représentations plus étranges puissent être utilisées pour certaines applications.

En dehors de l'ordinateur, nous utilisons tout type de représentation humaine compréhensible, selon la convenance humaine concernant le type de valeur représentée. La représentation binaire est souvent trop longue et non structurée pour être lue et écrite facilement, faisant ainsi place à l'hexadécimal ou à l'octal. Le choix peut souvent avoir à voir avec la façon dont l'information est structurée dans un mot binaire, qui n'est pas nécessairement destiné à représenter un nombre.

Mais, si l'on considère uniquement les chiffres , c'est-à-dire la représentation des nombres, il vaut la peine d'examiner d'autres systèmes de représentation numérique pour comprendre que les principaux facteurs sont: la physiologie, l'habitude et la commodité. La commodité est bien sûr le principal facteur de création de la diversité, car elle dépend du contexte d'utilisation.

Un regard plus large

2n prennent en systèmes , principalement binaires, octaux et hexadécimaux.

Le corps de la question ne semble nullement limité aux ordinateurs, et les humains ont utilisé et utilisent encore plusieurs autres systèmes de numérotation. Certains d’entre eux sont même utilisés dans les ordinateurs, par exemple lorsqu’il s’agit de nombres entiers longs (sans parler des nombres non entiers ).

Une première remarque est que lorsque les gens comptent en milliers ou en millions comme une unité, cela est toujours considéré comme décimal, car ce sont des puissances de 10. On peut donc se demander pourquoi octal ou hexadécimal ne devrait pas être considéré comme une simple variation sur le binaire. Une raison possible peut être le nombre de symboles utilisés pour représenter les nombres (bien que ce soit un problème contestable, comme nous le verrons avec d'autres systèmes).

Ensuite, concernant les humains, ils utilisent plusieurs systèmes en base 5, appelés systèmes quinaires . En fait, la plupart de ces systèmes ont deux bases, la seconde étant 2 ou 4, alternant avec la base cinq, ce qui les rend équivalentes à la base 10 (décimale) ou à la base 20 (vigésimale). Devinez d'où cela vient :)

Ces systèmes à double base sont appelés bi-quinaires ou quadri-quinaires. Le quinaire pur est rarement utilisé.

Le chiffre romain peut être considéré comme un système bi-quinaire (qui est une indication sur la façon de faire de l'arithmétique avec eux). Les bouliers chinois et japonais utilisent le bi-quinaire. Le quadri-quinaire était utilisé par les Mayas.

Les raisons d'utiliser un système sont probablement nombreuses. Une bonne raison est qu'il s'agissait du premier design local et que les gens y sont désormais habitués. Par exemple, on pourrait aussi se demander pourquoi les anglophones utilisent encore un système de numérotation extrêmement étrange lorsqu'ils tentent de mesurer des distances. On pourrait dire que c'est une question de plusieurs unités, pas de numérotation, mais c'est une remarque très faible. Les nombres sont principalement utilisés pour mesurer des choses.

D'autres raisons de conserver un système sont la commodité dans un contexte donné. Il peut y avoir un compromis entre le nombre de symboles différents, ou les positions sur un boulier, et le nombre de symboles nécessaire pour former des nombres suffisamment grands. La base 2 fonctionne avec 2 symboles distincts, mais présente de nombreuses occurrences, ce qui peut être gênant pour une représentation matérielle. La base Vigesimal 20 nécessiterait vingt symboles et de très grandes tables de multiplication dont les gens ne se souviendraient pas. Mais un système bi-quinaire ou quadri-quinaire est beaucoup plus facile à gérer, en particulier pour construire un boulier. Un système quinaire pur serait probablement encore meilleur, mais il va à l'encontre des habitudes et de l'intuition basées sur la physiologie. Et c'est toujours agréable de pouvoir utiliser nos doigts pour compter avec, quand on ne sait pas mieux.

Mais ce n'est pas tout.

Un système très ancien et très courant est le système sexagésimal utilisé pour mesurer le temps et les angles (mais nous savons qu'ils sont liés, par rotation de la Terre). Il utilise la base 60, mais n'utilise pas 60 symboles car c'est beaucoup trop. Il s'appuie donc sur un autre système pour représenter ses synboles (comme le système décimal).

Le cercle peut être divisé en 6 parties correspondant à des angles de 60 degrés, qui sont les plus simples à construire avec des triangles équilatéraux. Ensuite, chaque degré correspond à 60 minutes d'arc, chacune divisée en 60 secondes.

Selon wikipedia

Il est originaire des anciens Sumériens au 3ème millénaire avant JC, il a été transmis aux anciens Babyloniens, et il est toujours utilisé - sous une forme modifiée - pour mesurer le temps, les angles et les coordonnées géographiques.

Compte tenu de l'origine, c'était un système assez pratique, à une époque où les mathématiques entraient à peine dans la petite enfance. Non seulement l'angle 60⁰ est facile à dessiner, mais 60 a beaucoup de facteurs, de sorte qu'il a permis de diviser de nombreuses façons avec des nombres entiers, sans reste.

12×5=60

Mais il existe d'autres façons d'atteindre 60 ans, comme le système vigésimal-ternaire des Babyloniens .

Pourquoi utilisons-nous toujours le système sexagésimal. Je suppose que nous sommes juste habitués à cela, et nous pouvons avoir trop de problèmes conflictuels pour qu'un changement soit pleinement justifié.

Il est intéressant de noter qu'il existe une grande interaction entre les systèmes de numérotation et les systèmes d'unités. Mais il faut s'y attendre, car la mesure est un rôle majeur pour les chiffres. Cela se remarque dans l'opposition entre les mesures décimales et binaires pour la taille de la mémoire .


3
C'est peut-être parce que le titre dit "Pourquoi hex, octal ou hexadécimal?"
Fizz

1
@RespawnedFluff Bonne remarque. Ensuite, mon questionnement peut s'étendre à la question. Je ne voulais pas dire que les autres réponses sont sans intérêt. Mais une vue plus large montre mieux les motivations possibles pour une variété de systèmes. Il soutient certaines des réponses déjà données. Fondamentalement, les motivations sont l'habitude et la commodité. Mais la commodité dépend beaucoup du contexte. La dichotomie de la taille de la mémoire est une création récente, et elle illustre ce point.
babou

2
La concision est une vertu, cette question ne nécessite pas de prose de 1000 mots, et la plupart n'est pas très pertinente. Vous n'avez également pas répondu à la question.
dtech

"Quand les gens comptent en milliers, ..., cela est toujours considéré comme décimal, car ce sont des puissances de 10. On peut donc se demander pourquoi octal ou hexadécimal ne devrait pas être considéré comme une simple variation sur le binaire." Parce que les milliers ne sont que l'omission de chiffres, généralement 0. Ceci est différent de la base-1000 qui utiliserait 1000 symboles différents pour chaque numéro 0-999.
dtech

1
@dtech Merci. J'avais oublié l'introduction ou le résumé que j'ai habituellement devant mes réponses. Et cela m'a conduit à un point important apparemment ignoré par d'autres réponses. Tous les mots binaires ne sont pas conçus comme des chiffres. Essayer d'obtenir une vue plus large est ce qui aide à trouver des problèmes.
babou

-1

Les ordinateurs comprennent les nombres binaires et en binaire, les poids du nombre sont au pouvoir de 2, donc le nombre de chiffres pour représenter un nombre peut être grand selon le nombre.

Disons que 64 en décimal peut être représenté par 7 bits alors que pour représenter le nombre 5000, nous avons besoin de 13 bits.

Les systèmes de nombres octal et hexadécimal sont un moyen compact de représenter un nombre binaire.


2
Comment cette réponse [What advantage is there to using a base different from ten or (a power of) two?]- ou comment interprétez-vous autrement Why not stick to [bases 2 and 10]??
greybeard
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.