Question

Je ne connais pas très bien l'architecture de la RAM et du disque dur, ni la manière dont l'électronique gère les morceaux de mémoire, mais cela a toujours éveillé ma curiosité :Pourquoi a-t-on choisi de s'arrêter à 8 bits pour le plus petit élément d'une valeur informatique ?

Ma question peut paraître très bête, car les réponses sont évidentes, mais je n'en suis pas très sûr...

Est-ce parce que 2^3 lui permet de s'adapter parfaitement lors de l'adressage de la mémoire ?L'électronique est-elle spécialement conçue pour stocker des morceaux de 8 bits ?Si oui, pourquoi ne pas utiliser des mots plus larges ?C'est parce qu'il divise 32, 64 et 128, de sorte que les mots processeur peuvent recevoir plusieurs de ces mots ?Est-ce simplement pratique d'avoir une valeur de 256 pour un si petit espace ?

Qu'en penses-tu ?

Ma question est un peu trop métaphysique, mais je veux m'assurer qu'il s'agit simplement d'une raison historique et non d'une raison technologique ou mathématique.

Pour l'anecdote, je pensais aussi au standard ASCII, dans lequel la plupart des premiers caractères sont inutiles avec des trucs comme UTF-8, j'essaye aussi de penser à un encodage de caractères plus petit et plus rapide...

Était-ce utile?

La solution

Par le passé, les octets n'ont pas toujours été 8 bits en taille (pour cette matière, les ordinateurs ne doivent pas être binaire non plus, mais l'informatique non binaire a vu beaucoup moins d'action dans la pratique). Il est pour cette raison que l'IETF et les normes ISO utilisent souvent le terme octet - ils ne pas utiliser octets parce qu'ils ne veulent pas assumer cela signifie 8 bits lorsque il ne fonctionne pas.

En effet, lorsque octets a été inventé, il a été défini comme une unité de bit 1-6. Octet tailles utilisés tout au long de l'histoire comprennent 7, 9, 36 et machines avec des octets de taille variable.

8 était un mélange de succès commercial, étant un nombre assez pratique pour les gens qui pensent à ce sujet (ce qui aurait introduits dans l'autre) et sans doute d'autres raisons pour lesquelles je suis complètement ignorant.

La norme ASCII vous mentionnez suppose un octet 7 bits, et est basée sur les normes de communication 6 bits précédents.


Edit:. Il peut être utile d'ajouter à cela, comme certains insistent sur le fait que ces octets sont toujours en disant octets, sont confus octets avec des mots

An octet est un nom donné à une unité de 8 bits (du latin pour huit). Si vous utilisez un ordinateur (ou à un niveau d'abstraction plus élevé, un langage de programmation) où les octets sont 8 bits, alors c'est facile à faire, sinon vous avez besoin de code de conversion (ou coversion dans le matériel). Le concept de octet vient en plus dans les normes de réseau que dans l'informatique locale, car elle permet d'être neutre architecture pour la création de normes qui peuvent être utilisées dans la communication entre les machines avec différentes tailles d'octets, d'où son utiliser dans IETF et les normes ISO (soit dit en passant, ISO / IEC 10646 utilise octet où les utilisations standard Unicode octet pour ce qui est essentiellement - avec quelques petites restrictions supplémentaires sur la dernière partie - la même norme, bien que le standard Unicode ne détails qu'ils signifie octet par octet , même si les octets peuvent être de tailles différentes sur des machines différentes). Le concept de octet existe précisément parce que les octets de 8 bits sont communs (d'où le choix de les utiliser comme base de ces normes), mais pas universel (d'où la nécessité d'un autre mot pour éviter toute ambiguïté).

Par le passé, un octet était la taille utilisée pour stocker un caractère, une question qui, à son tour se fonde sur les pratiques, les normes et les normes de facto les ordinateurs antidater utilisés pour télex et autres moyens de communication, à commencer peut-être avec Baudot en 1870 (Je ne connais pas de plus tôt, mais je suis ouvert à des corrections).

Ceci est reflété par le fait que dans C et C ++ de l'unité de stockage d'un octet est appelé char dont la taille en bits est défini par CHAR_BIT dans l'en-tête standard limits.h. Différentes machines utiliseraient 5,6,7,8,9 ou plusieurs bits pour définir un caractère. Ces jours-ci, bien sûr, nous définissons les caractères que 21 bits et utilisent différents encodages pour les stocker dans 8, 16 ou unités 32 bits, (et les moyens non-Unicode autorisés comme UTF-7 pour d'autres tailles) mais, historiquement, qui a été la comme il était.

Dans les langues qui ont pour but d'être plus cohérente entre toutes les machines, plutôt que de refléter l'architecture de la machine, byte a tendance à être fixé dans la langue, et ces jours-ci, cela signifie généralement qu'il est défini dans la langue que 8 bits. Compte tenu du point de l'histoire où elles ont été faites, et que la plupart des machines ont maintenant des octets de 8 bits, la distinction est largement discutable, mais il est impossible de mettre en œuvre un compilateur, la gestion du temps, etc. pour ces langues sur des machines avec différentes tailles octets, mais pas aussi facile.

Un mot est la taille « naturelle » pour un ordinateur donné. Ceci est moins clairement définie, car elle affecte quelques préoccupations communes qui coïncide en général, mais peut-être pas. La plupart des registres sur une machine sera cette taille, mais certains pourraient ne pas. La plus grande taille d'adresse serait typiquement un mot, bien que ce ne soit pas le cas (le Z80 avait un octet de 8 bits et un mot 1 octet, mais a permis à certains o doublerf registres pour donner un appui de 16 bits dont 16 bits d'adressage).

Encore une fois, nous voyons ici une différence entre C et C ++ où int est défini en termes de mot taille et long étant défini pour tirer profit d'un processeur qui a un concept « à long terme » should existe, tout en étant peut-être dans identique un cas donné à int. Les valeurs minimales et maximales sont de nouveau dans l'en-tête de limits.h. (En effet, comme le temps a passé, int peut être défini comme plus petit que le mot grandeur naturelle, comme une combinaison de cohérence avec ce qui est commun ailleurs, la réduction de l'utilisation de la mémoire pour un tableau de ints, et probablement d'autres préoccupations que je n » sais de).

langues Java et .NET prennent l'approche de la définition int et long comme fixe dans tous les architecutres, et de faire face aux différences un problème pour l'exécution (en particulier le vacillement) à traiter. Notamment si, même dans .NET la taille d'un pointeur (en code non sécurisé) varie en fonction de l'architecture à la taille de texte sous-jacent, plutôt que d'une taille de mot imposée langue.

Par conséquent, l'octet, l'octet et le mot sont tous très indépendants les uns des autres, en dépit de la relation de l'octet == octet et mot étant un nombre entier d'octets (et un nombre entier, tour binaire comme 2, 4, 8, etc. ) étant commun aujourd'hui.

Autres conseils

Tous les octets sont 8 bits. Certains sont 7, certains 9, d'autres valeurs entièrement. La raison pour laquelle 8 est important est que, dans la plupart des ordinateurs modernes, il est le nombre standard de bits dans un octet. Comme mentionné Nikola, un bit est la plus petite unité réelle (une seule valeur binaire, vrai ou faux).

Comme on l'a mentionné, cet article http://en.wikipedia.org/wiki/Byte décrit l'octet et son historique de taille variable dans un peu plus en détail.

Le raisonnement général derrière pourquoi 8, 256 et autres numéros sont importants est que ce sont des puissances de 2 et ordinateurs fonctionnent à l'aide d'un système de base 2 (binaire) de commutateurs.

Le codage ASCII nécessitait 7 bits et EBCDIC nécessitait 8 bits.Les codes ASCII étendus (tels que les jeux de caractères ANSI) utilisaient le 8ème bit pour étendre le jeu de caractères avec des graphiques, des caractères accentués et d'autres symboles. Certaines architectures utilisaient des encodages propriétaires ;un bon exemple est le DEC PDP-10, qui avait un mot machine de 36 bits.Certains systèmes d'exploitation sur cette architecture utilisaient des encodages compressés qui stockaient 6 caractères dans un mot machine à diverses fins telles que les noms de fichiers.

Dans les années 1970, le succès du D.G.Nova et DEC PDP-11, qui étaient des architectures 16 bits et des mainframes IBM avec des mots machine de 32 bits, poussaient l'industrie vers un caractère 8 bits par défaut.Les microprocesseurs 8 bits de la fin des années 1970 ont été développés dans cet environnement et sont devenus un standard de facto, d'autant plus que les périphériques disponibles dans le commerce tels que les UART, les puces ROM et les puces FDC étaient construits comme des dispositifs 8 bits.

Vers la fin des années 1970, l'industrie a opté pour le 8 bits comme standard de facto et les architectures telles que le PDP-8 avec son mot machine de 12 bits sont devenues quelque peu marginalisées (bien que le PDP-8 ISA et ses dérivés apparaissent toujours dans les produits de systèmes embarqués). ).Des conceptions de microprocesseurs 16 et 32 ​​bits telles que les familles Intel 80x86 et MC68K ont suivi.

Depuis les ordinateurs fonctionnent avec des nombres binaires, tous les pouvoirs de deux sont importants.

numéros 8bit sont en mesure de représenter 256 (2 ^ 8) valeurs distinctes, assez pour tous les caractères de l'anglais et un bon nombre de ceux supplémentaires. Cela fait les numéros 8 et 256 très important.
Le fait que de nombreux processeurs (utilisés pour et encore) des données de processus en 8bit beaucoup aidé.

D'autres pouvoirs importants de deux, vous pourriez avoir entendu parler sont 1024 (2 ^ 10 = 1k) et 65536 (2 ^ 16 = 65k).

Les ordinateurs sont construites sur l'électronique numérique et l'électronique numérique fonctionne avec les États. Un fragment peut avoir 2 états, 1 ou 0 (si la tension est au-dessus un certain niveau, il est alors 1, sinon il est égal à zéro). Pour représenter ce système binaire de comportement a été introduit (enfin pas présenté, mais largement acceptée).

Nous arrivons donc à peu. Bit est le plus petit fragment dans le système binaire. Elle ne peut prendre que deux états, 1 ou 0, et il représente le fragment atomique de l'ensemble du système.

Pour rendre notre vie facile l'octet (8 bits) a été introduit. Pour donner u quelque analogie que nous n'exprimons poids en grammes, mais qui est la mesure de base du poids, mais nous utilisons kg, car il est plus facile à utiliser et à comprendre l'utilisation. Un kilogramme est 1000 grammes, et qui peut être exprimé en 10 la puissance de 3. Alors, quand nous revenons au système binaire et nous utilisons la même puissance que nous obtenons 8 (2 sur la puissance de 3 est 8). Cela a été fait parce que l'utilisation de bits seulement a été trop compliqué dans chaque calcul de jour.

Ce lieu, donc à l'avenir lorsque nous avons réalisé que 8 octets était encore trop petit et devenir compliqué à utiliser, nous avons ajouté +1 sur la puissance (2 sur la puissance de 4 est 16), puis à nouveau 2 ^ 5 est 32, et ainsi de suite et le 256 est seulement 2 à la puissance de 8.

Votre réponse est que nous suivons le système binaire en raison de l'architecture des ordinateurs, et nous allons dans la valeur de la puissance pour représenter obtenir des valeurs que nous pouvons simplement gérer tous les jours, et qui est la façon dont vous avez à partir d'un bit d'un octet (8 bits) et ainsi de suite!

(2, 4, 8 , 16, 32, 64, 128, 256 , 512, 1024, etc.) ( 2 ^ x , x = 1,2,3,4,5,6,7,8,9,10 et ainsi de suite)

Le nombre important ici est 0 binaire ou 1. sont liés à toutes vos questions cela.

Claude Shannon et George Boole a fait le travail fondamental sur ce que nous appelons aujourd'hui la théorie de l'information et l'arithmétique booléenne. Bref, c'est la base de la façon dont un commutateur numérique, avec seulement la capacité de représenter 0 OFF et 1 ON peut représenter des informations plus complexes, telles que les numéros, la logique et une photo jpg. Binary est la base des ordinateurs que nous les connaissons actuellement, mais d'autres ordinateurs de base de nombre ou d'ordinateurs analogiques sont tout à fait possible.

Dans l'arithmétique décimale humaine, les puissances de dix ont une signification. 10, 100, 1000, 10 000 chacun semblent importants et utiles. Une fois que vous avez un ordinateur basé sur binaire, il y a des puissances de 2, de même, qui deviennent importants. 2 ^ 8 = 256 est suffisant pour un alphabet caractères, ponctuation et de contrôle. (Plus important encore, 2 ^ 7 est suffisant pour un alphabet, les caractères de ponctuation et de contrôle et 2 ^ 8 est assez pour les caractères ASCII et Interroger le bit .)

Nous comptons normalement dans la base 10, un seul chiffre peut avoir l'une des dix valeurs différentes. L'informatique est basée sur des commutateurs (microscopique) qui peut être activé ou désactivé. Si l'un d'entre eux représente un chiffre, ce chiffre peut être 1 ou 0. Ceci est la base 2.

Il résulte de là que les ordinateurs fonctionnent avec des chiffres qui sont construits comme une série de 2 chiffres de valeur.

  • 1 chiffres, 2 valeurs
  • 2 chiffres, 4 valeurs
  • 3 chiffres, 8 valeurs, etc.

Lorsque les processeurs sont conçus, ils doivent choisir une taille que le processeur sera optimisé pour fonctionner avec. Pour la CPU, cela est considéré comme un « mot ». CPU antérieures étaient basées sur la taille des mots de fourbits et peu après 8 bits (1 octet). Aujourd'hui, les processeurs sont principalement conçus pour fonctionner sur 32 bits et 64 bits de mots. Mais vraiment, le « switch » à deux états sont la raison pour laquelle tous les numéros informatiques ont tendance à être des puissances de 2.

Je pense que la raison principale est liée à la conception originale du PC IBM.Le processeur Intel 8080 était le premier précurseur du 8086 qui sera plus tard utilisé dans le PC IBM.Il y avait des registres de 8 bits.Ainsi, tout un écosystème d’applications s’est développé autour de la métaphore 8 bits.Afin de conserver la compatibilité ascendante, Intel a conçu toutes les architectures ultérieures pour conserver les registres 8 bits.Ainsi, le 8086 et tous les processeurs x86 ont ensuite conservé leurs registres 8 bits pour des raisons de compatibilité ascendante, même s'ils ont ajouté de nouveaux registres 16 bits et 32 ​​bits au fil des ans.

L'autre raison à laquelle je peux penser est que 8 bits sont parfaits pour adapter un jeu de caractères latins de base.Vous ne pouvez pas le mettre en 4 bits, mais vous pouvez le faire en 8.Ainsi, vous obtenez l’intégralité du jeu de caractères ASCII de 256 valeurs.C'est également la plus petite puissance de 2 pour laquelle vous disposez de suffisamment de bits dans lesquels vous pouvez insérer un jeu de caractères.Bien sûr, de nos jours, la plupart des jeux de caractères ont en réalité une largeur de 16 bits (c'est-à-direUnicode).

Charles Petzold a écrit un livre intéressant appelé code que couvre exactement cette question . Voir le chapitre 15, et octets Hex.

Citations de ce chapitre:

  

Huit valeurs binaires sont entrées dans le   additionneurs, les verrous et les sélecteurs de données,   et émet également de ces unités.   les valeurs de huit bits sont également définies par   les commutateurs et affichées par des ampoules,   Le chemin de données dans ces circuits est   dit donc être 8 bits de large . Mais   pourquoi 8 bits? Pourquoi ne pas 6 ou 7 ou 9   10?

     

... il n'y a vraiment aucune raison pour   il fallait construire cette façon. Huit   morceaux juste semblait à l'époque d'être un   montant pratique, une belle biteful de   bits si vous voulez.

     

... Pendant un certain temps, un octet signifiait simplement   le nombre de bits dans un particulier   Chemin de données. Mais au milieu des années 1960. dans   connexion avec le développement de   IBM System / 360 (leur grand complexe   des ordinateurs d'affaires), le mot est venu   pour désigner un groupe de 8 bits.

     

... L'une des raisons IBM vers gravitaient   octets de 8 bits est la facilité de stockage   numéros dans un format connu sous le nom BCD.   Mais comme nous le verrons dans les chapitres à venir, tout à fait par hasard un octet est   idéal pour stocker du texte, car la plupart   langues écrites dans le monde   (À l'exception des idéogrammes   utilisé en chinois, japonais et coréen)   peut être représenté avec moins de 256   caractères.

Des raisons historiques, je suppose. 8 est une puissance de 2, 2 ^ 2 est 4 et 2 ^ 4 = 16 est beaucoup trop peu pour la plupart des buts, et 16 (la prochaine puissance de deux) matériel peu est venu beaucoup plus tard.

Mais la principale raison, je pense, est le fait qu'ils avaient 8 microprocesseurs bits, puis 16 microprocesseurs bits, dont les paroles pourraient très bien être représentée comme 2 octets, et ainsi de suite. Vous savez, cruft historique et compability en arrière etc.

Une autre raison pragmatique Similairement contre « mise à l'échelle vers le bas »: si nous avions, par exemple, utiliser 4 bits en un seul mot, nous ne essentiellement obtenir que la moitié de la troughtput par rapport à 8 bits. En plus de déborder beaucoup plus vite.

Vous pouvez toujours presser par exemple 2 numéros dans la gamme 0..15 dans un octet ... il vous suffit de les extraire à la main. Mais à moins que vous avez, comme, gazillions des ensembles de données pour maintenir côte à côte la mémoire, ce ne vaut pas l'effort.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top