web-dev-qa-db-fra.com

Quelle est la différence entre un mot et un octet?

J'ai fait des recherches. Un octet est composé de 8 bits et un mot est la plus petite unité pouvant être adressée en mémoire. La longueur exacte d'un mot varie. Ce que je ne comprends pas, c'est à quoi ça sert d'avoir un octet? Pourquoi ne pas dire 8 bits?

J'ai posé cette question à un prof et il a dit que la plupart des machines de nos jours étaient adressables sur des octets, mais qu'est-ce que cela ferait un mot?

79
user796388

Octet : Aujourd'hui, un octet est presque toujours composé de 8 bits. Cependant, cela n'a pas toujours été le cas et il n'y a pas de "standard" ou quelque chose qui dicte cela. Puisque 8 bits est un nombre commode pour travailler avec cela est devenu la norme de facto.

Word : Le taille naturelle avec laquelle un processeur traite des données (la taille du registre). Les tailles de mot les plus courantes rencontrées aujourd'hui sont 8, 16, 32 et 64 bits, mais d'autres tailles sont possibles. Par exemple, il y avait quelques machines 36 bits , ou même machines 12 bits .

L'octet est la plus petite unité adressable pour une CPU. Si vous voulez définir/effacer des bits individuels, vous devez d'abord extraire l'octet correspondant de la mémoire, manipuler les bits, puis réécrire l'octet dans la mémoire.

Le mot est le plus gros bloc de bits avec lequel un processeur peut effectuer un traitement (comme une addition ou une soustraction) à la fois. Cette définition est un peu floue, car certains processeurs peuvent avoir différentes tailles de Word pour différentes tâches (traitement du nombre entier par rapport au nombre à virgule flottante, par exemple). La taille de mot est ce avec quoi la majorité des opérations travaille.

Il existe également quelques processeurs qui ont une taille différente pointeur: par exemple, le 8086 est un processeur 16 bits, ce qui signifie que ses registres ont une largeur de 16 bits. Mais ses pointeurs (adresses) ont une largeur de 20 bits et ont été calculés en combinant deux registres de 16 bits d’une certaine manière.

143
DarkDust

Ce que je ne comprends pas, c'est à quoi ça sert d'avoir un octet? Pourquoi ne pas dire 8 bits?

Outre le point technique selon lequel un octet n'est pas nécessairement 8 bits, la raison pour avoir un terme est simple par nature humaine:

  • économie d'effort (alias la paresse) - il est plus facile de dire "octet" plutôt que "huit bits"

  • tribalisme - des groupes de personnes aiment utiliser le jargon/une langue privée pour les distinguer des autres.

Suis le courant. Vous ne allez pas changer plus de 50 ans de terminologie informatique accumulée et de bagage culturel en se plaignant de cela.


FWIW - le terme correct à utiliser lorsque vous voulez dire "8 bits indépendants de l'architecture matérielle" est "octet".

15
Stephen C

OCTET

J'essaie de répondre à cette question du point de vue de C++.

La norme C++ définit "octet" comme "une unité de données adressable suffisamment grande pour contenir n’importe quel membre du jeu de caractères de base de l’environnement d’exécution".

Cela signifie que l'octet est constitué d'au moins suffisamment de bits adjacents pour accueillir le jeu de caractères de base pour la mise en oeuvre. En d'autres termes, le nombre de valeurs possibles doit être égal ou supérieur au nombre de caractères distincts. Aux États-Unis, les jeux de caractères de base sont généralement les jeux ASCII et EBCDIC, chacun pouvant être adapté à 8 bits). Il est donc garanti qu’un octet aura au moins 8 bits.

En d'autres termes, un octet est la quantité de mémoire nécessaire pour stocker un seul caractère.

Si vous souhaitez vérifier le "nombre de bits" dans votre implémentation C++, vérifiez le fichier "limits.h". Il devrait avoir une entrée comme ci-dessous.

#define CHAR_BIT      8         /* number of bits in a char */

Word

Un mot est défini comme un nombre spécifique de bits qui peuvent être traités ensemble (c'est-à-dire en une tentative) par la machine/le système. Alternativement, nous pouvons dire que Word définit la quantité de données pouvant être transférée entre CPU et RAM en une seule opération.

Les registres matériels sur un ordinateur sont de la taille Word. La taille du mot définit également l'adresse mémoire la plus grande possible (chaque adresse mémoire pointe vers une mémoire de la taille d'un octet).

Remarque - Dans les programmes C++, les adresses de mémoire pointent vers un octet de mémoire et non vers un mot.

7
Vaibhav Patle

Pourquoi ne pas dire 8 bits?

Parce que toutes les machines n'ont pas d'octets 8 bits. Puisque vous avez tagué ce C, cherchez CHAR_BIT dans limits.h.

6
cnicutar

Un mot est la taille des registres du processeur. Cela signifie que les instructions du processeur telles que, add, mul, etc. sont sur des entrées de la taille d'un mot.

Mais la plupart des architectures modernes ont une mémoire adressable en morceaux de 8 bits, il est donc pratique d’utiliser le mot "octet".

5
VoidStar

Dans ce contexte, un mot est l'unité utilisée par une machine lorsqu'elle travaille avec de la mémoire. Par exemple, sur une machine 32 bits, le mot est long de 32 bits et sur 64 bits, long de 64 bits. La taille de mot détermine l'espace d'adressage.

En programmation (C/C++), le mot est généralement représenté par le int_ptr type, qui a la même longueur qu'un pointeur, permettant ainsi d'abstraction de ces détails.

Certaines API peuvent toutefois vous semer la confusion, telle que l'API Win32, car elle comporte des types tels que Word (16 bits) et DWORD (32 bits). La raison en est que l'API visait initialement les ordinateurs 16 bits, puis a été transférée sur des ordinateurs 32 bits, puis sur des ordinateurs 64 bits. Pour stocker un pointeur, vous pouvez utiliser INT_PTR. Plus de détails ici et ici .

5
npclaudiu

Il semble que toutes les réponses supposent des langages de haut niveau et principalement C/C++.

Mais la question est étiquetée "Assemblage" et dans tous les assembleurs que je connais (pour les processeurs 8 bits, 16 bits, 32 bits et 64 bits), les définitions sont beaucoup plus claires:

byte  = 8 bits 
Word  = 2 bytes
dword = 4 bytes = 2Words (dword means "double Word")
qword = 8 bytes = 2Dwords = 4Words ("quadruple Word")
4
johnfound

Quelle que soit la terminologie présente dans les feuilles de données et les compilateurs, un octet correspond à huit bits. N'essayons pas de confondre les enquêteurs et les généralités avec les exceptions les plus obscures, en particulier parce que le mot 'Byte' vient de l'expression "By Eight". Je travaille dans l’industrie des semi-conducteurs et de l’électronique depuis plus de trente ans et, auparavant, Byte n’exprimait pas plus de huit bits.

2
Brendan

La longueur exacte d'un mot varie. Ce que je ne comprends pas, c'est à quoi ça sert d'avoir un octet? Pourquoi ne pas dire 8 bits?

Même si la longueur d'un mot varie sur toutes les machines modernes et même toutes les architectures plus anciennes que je connais bien, la taille du mot est toujours un multiple de la taille en octets. Il n’ya donc aucun inconvénient particulier à utiliser "octet" au-dessus de "8 bits" en relation avec la taille variable du mot.

Au-delà, voici quelques raisons d’utiliser byte (ou octet1) sur "8 bits":

  1. Les grandes unités sont tout simplement pratiques pour éviter les nombres très grands ou très petits: vous pouvez également demander "pourquoi disons 3 nanosecondes quand on pourrait dire 0,000000003 secondes" ou "pourquoi disons 1 kilogramme quand on pourrait dire 1 000 grammes", etc.
  2. Au-delà de la commodité, l’unité d’un octet est aussi fondamentale que 1 bit étant donné que de nombreuses opérations ne fonctionnent généralement pas au niveau octet, mais au niveau octet: adressage mémoire, allocation de stockage dynamique, lecture à partir d'un fichier ou d'une socket, etc.
  3. Même si vous deviez adopter "8 bits" comme type d'unité, de sorte que vous puissiez dire "deux 8 bits" au lieu de "deux octets", il serait souvent très déroutant que votre nouvelle unité commence par un nombre. Par exemple, si quelqu'un dit "cent 8 bits", cela pourrait facilement être interprété comme 108 bits plutôt que 100 bits.

1 Bien que je considère un octet comme étant 8 bits pour cette réponse, ce n’est pas universellement vrai: sur les machines plus anciennes, un octet peut avoir une taille différente. (comme 6 bits . Octet signifie toujours 8 bits, quelle que soit la machine (ce terme est donc souvent utilisé pour définir Dans les usages modernes, octet est utilisé dans l’ensemble comme synonyme de 8 bits.

2
BeeOnRope