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.

-1voto

K-ballo Points 44794

Si une machine est adressable par octet et qu'un mot est la plus petite unité qui peut être adressée en mémoire, alors je suppose qu'un mot serait un octet !

0 votes

Yep. L'unité minimale de mémoire adressable sur le TMS320C54xx (un des DSP de Texas Instruments) est de 16 bits, ce qui est aussi la plus petite taille de ses registres généraux. Et le compilateur C de TI y définit char=short=int=16 bits.

0 votes

Non, la plupart des machines RISC ont des mots de 32 bits, mais peut adressent des octets uniques. Sur MIPS par exemple, word définitivement signifie 32 bits, mais il y a un lb (load byte) qui charge 8 bits.

-1voto

tolitius Points 9816

Un groupe de 8 bits est appelé un octet ( à l'exception de certaines architectures où il ne l'est pas :) )

A mot est un groupe de bits de taille fixe qui est traité comme une unité par le jeu d'instructions et/ou le matériel du processeur. Cela signifie que la taille d'un registre à usage général (qui est généralement supérieur à un octet) est un mot.

Dans le C, un mot est le plus souvent appelé un nombre entier => int

7 votes

Un groupe de 8 bits est appelé un octet.

2 votes

Correct : Le terme octet a été défini pour désigner explicitement une séquence de 8 bits en raison de l'ambiguïté associée au terme "octet". . Mais j'aime le son de byte mieux :)

2 votes

@tolitius : +1 pour "Mais j'aime le son de byte mieux" : I fortement Je soupçonne que vous n'êtes pas le seul dans ce cas et, à l'exception de quelques systèmes de niche, la "confusion" d'un octet pouvant avoir une taille autre que 8 bits n'est plus pertinente de nos jours.

-1voto

Chris Calley Points 1

Les termes BYTE et WORD sont relatifs à la taille du processeur auquel il est fait référence. Les processeurs les plus courants sont/étaient de 8 bits, 16 bits, 32 bits ou 64 bits. Ce sont les longueurs de MOTS du processeur. En fait, la moitié d'un MOT est un BYTE, quelle que soit sa longueur numérique. Prêt pour cela, la moitié d'un BYTE est un NIBBLE.

0 votes

Non, dans les processeurs avec des mots de 32 bits et des octets de 8 bits (par exemple, MIPS ou ARM), un demi-mot correspond à 2 octets.

-3voto

Brian Knoblauch Points 8747

En fait, dans l'usage courant, mot est devenu synonyme de 16 bits, tout comme octet l'est de 8 bits. Cela peut prêter à confusion car la "taille du mot" sur un processeur 32 bits est de 32 bits, mais lorsqu'on parle d'un mot de données, on parle de 16 bits. Les microcontrôleurs avec une taille de mot de 32 bits ont pris l'habitude d'appeler leurs instructions "longues" (soi-disant pour essayer d'éviter la confusion mot/double mot).

1 votes

Cela dépend entièrement du type de CPU. Comme vous le soulignez, sur les machines 32 bits non-IA32, un "mot" est généralement composé de 32 bits.

2 votes

@RossPatterson Cela dépend entièrement du fait que vous développez un logiciel ou que vous dînez.

0 votes

ARM / MIPS / d'autres architectures RISC courantes ont des mots de 32 bits. C'est la largeur du registre (sur la version 32 bits de ces ISA) et la largeur de l'instruction. 16 bits est un demi-mot, donc Les instructions ARM comme ldrh pour charger 16 bits et les étendre à zéro dans un registre de 32 bits. Ou bien ldrsh pour charger et étendre le signe de 16 bits.

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