107 votes

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

J'ai fait quelques recherches. Un octet est constitué de 8 bits et un mot est la plus petite unité qui peut être adressée en mémoire. La longueur exacte d'un mot varie. Ce que je ne comprends pas, c'est l'intérêt d'avoir un octet. Pourquoi ne pas dire 8 bits ?

J'ai posé cette question à un professeur et il m'a répondu que la plupart des machines actuelles sont adressables par octet, mais qu'est-ce que cela fait d'un mot ?

14 votes

Il est préférable d'éviter le terme "mot" en raison de son ambiguïté. Ou bien il faut préciser en disant mot de 16 bits, mot de 32 bits, ...

2 votes

Est-il avantageux qu'un mot soit plus grand ou plus petit ?

2 votes

Un mot plus grand permet d'avoir des pointeurs plus grands (c'est-à-dire plus de RAM) et de traiter rapidement des nombres plus importants. Il peut également permettre à certaines opérations comme memset d'être plus rapides, en travaillant dans des blocs plus grands. Cependant, les processeurs avec un mot plus grand nécessitent plus de transistors dans le processeur et peuvent consommer un peu plus d'énergie.

5voto

npclaudiu Points 1431

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

En programmation (C/C++), le mot est typiquement représenté par le symbole int_ptr qui a la même longueur qu'un pointeur, ce qui permet d'abstraire ces détails.

Certaines API peuvent cependant vous dérouter, comme 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 machines 16 bits, puis a été portée aux machines 32 bits, puis aux machines 64 bits. Pour stocker un pointeur, vous pouvez utiliser INT_PTR . Plus de détails ici et ici .

5voto

johnfound Points 2528

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 CPU 8bit, 16bit, 32bit et 64bit), 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 votes

Non, ces tailles ne sont valables que sur une machine 16 bits. Vous êtes probablement habitué à la programmation Windows qui utilise toujours ces macros, car c'est un héritage de l'époque des 16 bits et MS n'a pas pris la peine de corriger cela.

2 votes

De plus, comme la taille d'un mot (et même d'un octet) peut varier, l'ISO-C a adopté l'approche suivante int<X>_t y uint<X>_t (plus d'autres) qui doivent être utilisés si vous voulez une variable/un paramètre d'une taille de bit spécifique.

0 votes

@DarkDust nous parlons ici de langage d'assemblage. Les normes C ne sont pas pertinentes. BTW, je programme en assembleur depuis 1980 et les mêmes noms étaient utilisés. (enfin, peut-être sauf qword)

3voto

BeeOnRope Points 3617

La longueur exacte d'un mot varie. Ce que je ne comprends pas, c'est l'intérêt 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 sur toutes les architectures plus anciennes que je connais, la taille du mot est toujours un multiple de la taille de l'octet. Il n'y a donc pas d'inconvénient particulier à utiliser "octet" plutôt que "8 bits" par rapport à la taille variable des mots.

En outre, voici quelques raisons d'utiliser l'octet (ou l'octet). 1 ) sur "8 bits" :

  1. Les unités plus grandes sont simplement pratiques pour éviter les nombres très grands ou très petits : on pourrait tout aussi bien demander "pourquoi dire 3 nanosecondes quand on pourrait dire 0,000000003 seconde" ou "pourquoi dire 1 kilogramme quand on pourrait dire 1 000 grammes", etc.
  2. Au-delà de la commodité, l'unité d'un octet est en quelque sorte aussi fondamental que 1 bit puisque de nombreuses opérations ne fonctionnent généralement pas au niveau de l'octet, mais au niveau de l'octet : adressage de la mémoire, allocation de stockage dynamique, lecture d'un fichier ou d'une socket, etc.
  3. Même si l'on adoptait "8 bits" comme type d'unité, de sorte que l'on puisse dire "deux 8 bits" au lieu de "deux octets", il serait souvent très déroutant que la nouvelle unité commence par un chiffre. Par exemple, si quelqu'un disait "one-hundred 8-bits", cela pourrait facilement être interprété comme 108 bits, plutôt que 100 bits.

1 Bien que je considère qu'un octet est constitué de 8 bits pour cette réponse, ce n'est pas universellement vrai : sur les anciennes machines, un octet est constitué de 8 bits. octet peut avoir une taille différente (par exemple 6 bits . Octet signifie toujours 8 bits, quelle que soit la machine (ce terme est donc souvent utilisé pour définir les protocoles de réseau). Dans l'usage moderne, l'octet est très majoritairement utilisé comme synonyme de 8 bits.

2voto

Brendan Points 21

Quelle que soit la terminologie utilisée dans les fiches techniques et les compilateurs, un "octet" est constitué de huit bits. N'essayons pas de confondre les enquêteurs et les généralités avec les exceptions plus obscures, d'autant plus que le mot "octet" vient de l'expression "par huit". Je travaille dans l'industrie des semi-conducteurs et de l'électronique depuis plus de trente ans et je n'ai jamais vu le mot "octet" utilisé pour exprimer quelque chose de plus que huit bits.

0 votes

Inhabituel oui (nous le savons). Par exemple, le texas instruments c54x Google texas instruments c54x byte. ti.com/lit/ug/spru393/spru393.pdf "Les instructions 'C55x sont des longueurs d'octets variables allant de 8 bits à 48 bits." stackoverflow.com/questions/2098149/

1 votes

Il ne vient pas du tout de là. Le terme a en fait été inventé par W. Buchholtz chez IBM à la fin des années 1950. Source : bobbemer.com/BYTE.HTM . Selon Bob Bemer, l'orthographe "byte" a été choisie de préférence à "bite" pour éviter toute confusion (avec "bit") due à des fautes de frappe. Il le saurait. Il était là !

0 votes

(Seulement 30 ans ? Tu n'es qu'un simple scaphandrier. J'ai appris à programmer sur des systèmes où la taille naturelle des "octets" n'était pas de 8 bits :-) )

1voto

LiLi Points 163

Référence : https://www.os-book.com/OS9/slide-dir/PPT-dir/ch1.ppt

L'unité de base du stockage informatique est le bit. Un bit peut contenir l'une des deux valeurs 0 et 1. Toutes les autres unités de stockage d'un ordinateur sont basées sur des collections de bits. Si l'on dispose de suffisamment de bits, il est étonnant de constater le nombre de choses qu'un ordinateur peut représenter : des chiffres, des lettres, des images, des films, des sons, des documents et des programmes, pour en citer pour n'en citer que quelques-unes. Un octet est constitué de 8 bits, et sur la plupart des ordinateurs, il s'agit du plus petit morceau de stockage pratique. de stockage pratique. Par exemple, la plupart des ordinateurs ne disposent pas d'une instruction pour déplacer un bit mais en ont une pour déplacer un octet. Un terme moins courant est le mot, qui est l'unité de données native d'une architecture informatique donnée. Un mot est composé d'un ou plusieurs octets. Par exemple, un ordinateur doté de registres de 64 bits et d'un système d'adressage de la mémoire de 64- bits a généralement des mots de 64 bits (8 octets). Un ordinateur exécute de nombreuses opérations dans sa taille native de mot plutôt que d'un octet à la fois. Le stockage informatique, ainsi que la plupart des débits informatiques, sont généralement mesurés et manipulés en octets. et manipulé en octets et en collections d'octets. Un kilooctet, ou Ko, représente 1 024 octets. un mégaoctet, ou Mo, correspond à 1 024 2 octets un gigaoctet, ou GB, correspond à 1 024 3 octets un téraoctet, ou TB, correspond à 1 024 4 octets un pétaoctet, ou PB, correspond à 1 024 5 octets. Les fabricants d'ordinateurs arrondissent souvent ces chiffres et disent qu'un mégaoctet correspond à 1 million d'octets et un gigaoctet à 1 milliard d'octets. La mise en réseau font exception à cette règle générale ; elles sont exprimées en bits (parce que les réseaux déplacent les données un bit à la fois). (parce que les réseaux déplacent les données un bit à la fois)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X