Octet
En informatique, un octet est un multiplet de  codant une information. Dans ce système de codage, s'appuyant sur le système binaire, un octet permet de représenter 2 nombres, soit  différentes. Un octet permet de coder des valeurs numériques ou jusqu'à  différents.

Le terme est couramment utilisé comme unité de mesure en informatique (symbole : o) pour indiquer la capacité de mémorisation des mémoires (mémoire vive ou morte, capacité des périphériques de stockage) À cette fin, on utilise couramment des multiples de l'octet, comme le kilooctet (), le mégaoctet (), le gigaoctet () ou le téraoctet ().

Cette unité permet aussi de quantifier la rapidité de transfert d'informations en octets par seconde (ou ses multiples : ko/s, Mo/s).

Étymologie 
Le mot octet est constitué du préfixe « oct- » signifiant huit et du suffixe « -et » signifiant petit. Littéralement un octet est un groupe de  qui permettent de coder  différents, ce qui est largement suffisant pour coder l'alphabet latin (y compris les différents types d'accents), les chiffres et la ponctuation. La langue anglaise a repris ce terme avec la même orthographe et la même signification.

Historique 

La quantité de bits que le processeur doit consommer pour exécuter une instruction machine est appelé le mot, sa taille est définie par le constructeur. Aux origines de l'informatique, les processeurs étant limités, ceux-ci consommaient ce mot par petites « bouchées », correspondant au nombre de bits du bus de données. C'est ainsi, que le terme  est créé en 1956 par Werner Buchholz alors qu'il travaille à la conception de l'IBM Stretch. C'est une déformation orthographique volontaire de l'anglais , littéralement « bouchée », pour éviter toute confusion avec bit par élision du e final..

Le byte était également l'unité de stockage permettant de stocker un caractère. En anglais, on utilise fréquemment le mot « char » (abréviation de character) pour « byte », et réciproquement. Chaque constructeur définissait la taille du byte en fonction de ses besoins du moment. Dans les années 1950 et 1960, le byte était souvent composé de 6 bits, car tous les caractères nécessaires à la programmation en langue anglaise pouvaient être codés avec six bits (64 possibilités). Le byte pouvait aussi avoir une taille de 9 bits sur d'autres systèmes. Le PDP-10 avait encore une autre définition du byte avec une taille variable, allant de 1 à 36 bits selon l'instruction machine à exécuter.

Dans la plupart des architectures matérielles, la capacité de la mémoire informatique est généralement exprimée en , alors que sur les architectures « grand public » en français, on l'exprime en octets. La généralisation des  de huit bits amplifie cette confusion, en tirant un trait sur les architectures anciennes − essentiellement nord-américaines. On trouve beaucoup de documentation en français exprimant improprement la capacité de mémoire en  par une confusion bytes/octets lors de la traduction.

Aujourd'hui, pour le Dictionnaire du multimédia – Audiovisuel, informatique, télécommunications de l'AFNOR, le byte est « l'unité d'information correspondant à un octet, soit  ». La normalisation IEC 80000-13 va dans le même sens : normaliser la taille des bytes à 8 bits. C'est de cette « normalisation » à  que vient la confusion.

Toutefois, en anglais comme en français, si l'on veut explicitement désigner une quantité de huit bits, on utilise le mot «  » ; tandis que si l'on veut exprimer l'unité d'adressage indépendamment du nombre de bits, on utilise le mot «  ». Ainsi la description formelle d’un langage de programmation utilisera sciemment le mot  si le langage ne nécessite pas qu’un  ait une taille d’un octet. C’est par exemple le cas du langage C, où un  peut contenir plus de huit bits. Le mot « octet » est sciemment utilisé en français comme en anglais pour décrire un format de données au bit près. Ainsi, on trouve le mot « octet » dans des textes anglais comme le  qui décrit le protocole de communication TCP d'Internet, ou dans le standard H.263 qui décrit une norme de codage vidéo numérique.

La même distinction entre «  » et « octet » existe donc dans les deux langues, seul change le mot que l'on utilise couramment dans les cas où le byte mesure huit bits.

Symbole 
Le symbole de l'octet est la lettre « o » minuscule.

La lettre « O » (en majuscule) n'est pas acceptable dans le Système international d'unités (SI) en raison du risque de confusion avec le chiffre 0 et parce que les lettres majuscules sont en général utilisées pour les symboles des unités dérivées d'un nom propre (par exemple : volt dont le symbole est , ou watt dont le symbole est ). Cette question n'est cependant pas tranchée, les unités d'information ne faisant pas partie du SI.

Multiples 

Historiquement, dans le monde informatique, les préfixes « kilo », « méga », « giga » ne représentaient pas une puissance d'un nombre en base dix (10 = ), mais une puissance d'un nombre en  (. Cependant, cette tradition n'était pas compatible avec les normes en vigueur pour les autres unités et n'était pas appliquée uniformément aux tailles exprimées en octets, notamment pour la mesure de la capacité des disques durs et autres périphériques de stockage. Une nouvelle norme a donc été créée en 1998 pour noter les multiples de  : les «  », « mébi », « gibi ».

Multiples normalisés 
La normalisation des préfixes binaires en 1998 par la Commission électrotechnique internationale spécifie les préfixes suivants pour représenter les multiples calculés en puissances  :
 kibi pour « kilo binaire » ;
 mébi pour « méga binaire » ;
 gibi pour « giga binaire » ;
 tébi pour « téra binaire » ;
 ainsi de suite.

Les préfixes binaires ont la relation d'ordre suivante :

Les préfixes décimaux quant à eux sont identiques aux préfixes du Système international d'unités :

Confusions entre multiples binaires et décimaux 

Certains utilisateurs débutants sont légitimement perturbés lorsqu'un logiciel ou système d'exploitation leur présente une quantité d'octets affichée avec un préfixe décimal, ou un acronyme en « Go », « Mo », mais une quantité calculée, à tort, sur des puissances de 1024. Bien que les constructeurs indiquent sur leurs composants des valeurs décimales (par exemple «  » représentent ), ces logiciels vont indiquer soit correctement «  », soit incorrectement «  ». Plus la capacité des supports augmente plus l'écart entre les valeurs attendues et constatées devient important : ainsi un disque dur de «  » (valeur indiquée par le constructeur et qui est conventionnellement correcte) a une capacité affichée dans les systèmes d'exploitation de , fréquemment notée de façon erronée «  », soit un écart de 9 %.

Ces confusions ont été à l'origine de plusieurs actions en justice, notamment aux États-Unis.

L'usage des préfixes décimaux, en contradiction avec les recommandations de la Commission électrotechnique internationale qui définissent clairement d'autres préfixes, reste toujours répandu dans la littérature et dans le langage courant. Les préfixes recommandés  ne sont pas encore systématiquement intégrés.

D'autres usages courants, mais incorrects, suppriment complètement le nom ou le symbole de l'unité pour ne plus garder que le nom ou le symbole du préfixe multiplicateur (par exemple « 56K » ou « 20 méga »). Cela entraîne cependant de nombreuses ambiguïtés quant à la nature de cette unité, notamment quand on l'utilise pour exprimer un taux de transfert de données ou la capacité d'une puce de mémoire : en effet, dans ces deux cas, il est courant que l'on mesure en bits plutôt qu'en octets (ainsi un débit de connexion de « 20 méga » — selon l'appellation commerciale — correspond à , ce qui peut induire en erreur un utilisateur non averti).

Variantes orthographiques 
La langue française pose un problème d'orthographe, relativement à la prononciation de la voyelle initiale du mot « octet » lorsqu'il suit un préfixe ; on peut donc trouver dans la littérature les formes suivantes : « kilo-octet » (avec trait d'union) ou « kilooctet » (sans trait d'union).

Au Québec, la forme d'usage est sans le trait d'union, sauf lorsqu'on est en présence d'une lettre doublée

Propriétés

Propriétés de représentation binaire 
Un octet peut représenter 2 soit  différentes. La valeur de tout octet peut s'écrire avec un entier naturel entre 0 et 255 compris. Elle peut aussi s'écrire avec huit chiffres binaires, entre 00000000 et 11111111 compris, ou avec deux chiffres hexadécimaux, entre 00 et FF compris. La notation hexadécimale est utilisable dans de nombreux langages informatiques car elle est compacte et pratique pour noter la valeur d'un ou plusieurs octet(s).

Un octet peut servir à noter un entier naturel, appelé en informatique « non signé »,  (en base dix). Une autre convention courante, le complément à deux, permet de noter un entier relatif, ou « signé », entre  (en base dix).

De nombreuses conventions existent pour représenter un caractère par un ou plusieurs octets. On peut notamment citer le codage ISO/CEI 8859-1, très utilisé pour représenter avec un octet les 10 chiffres, les  minuscules, les  majuscules, ainsi que les lettres accentuées et la ponctuation des langues d'Europe occidentale, dont le français. Plus récent, le codage UTF-8 permet de noter tout caractère avec un à quatre octets. L'article sur le codage des caractères développe ce thème.

Propriétés de représentation décimale 
Dans certaines applications nécessitant un codage exact des valeurs décimales (par exemple pour les applications financières), les puissances  peuvent ne pas s'avérer pratiques. Aussi un octet est parfois utilisé pour stocker jusqu'à deux chiffres décimaux exactement (entre ), chacun codé sur un quartet (quatre bits) distinct entre  et . Les autres valeurs de quartets peuvent être utilisées pour coder la position d'une virgule décimale, un signe, l'absence de chiffre significatif à la position indiquée, ou une autre fonction spéciale (valeur infinie, valeur erronée non numérique). Certains calculateurs (et des bibliothèques logicielles de calcul à virgule fixe ou travaillant sur de très grands entiers ou des valeurs de grande précision) utilisent ce format dit « BCD », sigle anglais de binary coded decimal (décimal codé en binaire).

L'usage du codage BCD était populaire sur les anciens systèmes (notamment ceux utilisant l'EBCDIC) car cela évitait une conversion finale coûteuse pour afficher les nombres à virgule flottante. De plus ce système était plus pratique au temps où les données étaient entrées manuellement sur des cartes perforées : pour convertir un nombre BCD en caractères, il suffisait d'éclater le nombre BCD en deux en n'utilisant qu'un seul quartet par octet pour représenter le chiffre en décimal, le quartet de poids fort prenant une valeur fixe indiquant simplement que c'est un chiffre décimal. Les autres valeurs de quartets de poids fort étaient utilisées pour indiquer que c'était une lettre majuscule, une lettre minuscule ou un autre symbole ou ponctuation. Aujourd'hui, dans la plupart des systèmes actuels, le codage EBCDIC des caractères et du BCD pour les valeurs numériques est plus rarement utilisé car la plupart des calculs se font plus rapidement en représentation binaire de façon matérielle avec une précision globale prédéfinie (codée sur un nombre fixe d'octets).

Des variantes du système BCD permettent de conserver une représentation précise des nombres à virgule fixe ou flottante en base dix, tout en permettant une plus grande compacité de stockage et en rendant les calculs plus rapides. L'astuce consiste à grouper les chiffres décimaux et les représenter en binaire sur un groupe de plusieurs octets. Par exemple :
 tout d'abord la représentation en quartets s'avère coûteuse en termes de traitement, et une valeur BCD est généralement d'abord convertie en supprimant la séparation en quartets, pour alors représenter en binaire les deux chiffres décimaux sur le même octet ; le calcul est alors simplifié car il s'effectue par groupe de deux chiffres à la fois au lieu d'un seul ; cette représentation laisse un bit de poids fort inutilisé (mais on peut l'utiliser comme marqueur pour des valeurs spéciales) ;
 on peut représenter exactement quatre chiffres décimaux dans un groupe de deux octets (c'est-à-dire sur 16 bits, puisque ceux-ci peuvent contenir 2 =  valeurs différentes) ; avec une représentation BCD, on stockerait exactement également quatre chiffres décimaux, mais les calculs se feraient uniquement chiffre par chiffre (c'est-à-dire quatre fois plus lentement) ; cette représentation laisse deux bits de poids fort inutilisés (mais on peut les utiliser comme marqueurs pour des valeurs spéciales).
 on peut représenter exactement sept chiffres décimaux dans un groupe de trois octets (c'est-à-dire sur , puisque ceux-ci peuvent contenir 2 =  différentes) ; avec une représentation BCD, on ne stockerait exactement que six chiffres décimaux ; cette représentation ne laisse aucun bit inutilisé ;
 on peut représenter exactement neuf chiffres décimaux dans un groupe de quatre octets (c'est-à-dire sur , puisque ceux-ci peuvent contenir 2 =  différentes) ; avec une représentation BCD, on ne stockerait exactement que huit chiffres décimaux ; cette représentation laisse deux bits de poids fort inutilisés (mais on peut les utiliser comme marqueurs pour des valeurs spéciales). Cette représentation est souvent utilisée dans les bibliothèques mathématiques de calcul sur des nombres de très grande précision.

Usages 

Les processeurs n'opèrent généralement pas sur chaque bit individuellement, mais sur des groupes de bits. L'habitude de concevoir le matériel pour qu'il traite les bits par huit, ou par multiples de huit, s'est généralisée depuis les années 1970, si bien qu'aujourd'hui l'octet et ses multiples sont généralement utilisés comme mesure de la capacité de mémorisation des mémoires informatiques : mémoire vive, disquette, disque dur, CD-ROM La taille des fichiers est aussi mesurée en octets (avec le plus souvent les multiples conventionnels en binaire).

Le taux de transfert des bus informatiques entre les applications informatiques et périphériques informatiques locaux est généralement donné en octets par seconde (avec les multiples normalisés ; voir ci-après). Mais les débits sur les réseaux ou supports de transmission de données s'expriment plutôt :
 en bauds (avec les multiples normalisés) c'est-à-dire le nombre de symboles codés par seconde, pour les technologies matérielles de modulation de très bas niveau, par exemple dans les modems, ces technologies séparant la fréquence d'échantillonnage en bauds (fortement liée à la bande passante physique exprimée en hertz) de la précision d'échantillonnage exprimée en bits par symbole (fortement liée au rapport signal/bruit du support de transmission exprimé en décibels ou en ) ;
 en bits par seconde (avec les multiples normalisés) pour le débit binaire final utilisable, résultant du produit du débit en bauds par le nombre de bits transmis par symbole, diminué éventuellement des bits de détection ou correction d'erreurs ou de synchronisation.

Bits et octets 
Exemples de conversion des bits vers octets (sans normalisation CEI) :
  = 
  =  = 
  =  = 
  =  =  =  ( / ).
  =  =  =  ( / ).
  =  =  =  ( / )
  =  =  =  ( / )

Mots 
Lorsque le traitement se fait sur plusieurs octets simultanément, notamment deux octets (16 bits) et quatre octets (), on parle parfois de mot et de double-mot, ou bien de demi-mot et de mot. La signification de ces termes à tendance à varier avec le contexte, notamment car en terminologie des langages d'assemblage pour processeurs, le « mot » désigne souvent la quantité d'information dans un registre de calcul entier pour une opération élémentaire, cette quantité pouvant aussi dépendre du mode d'adressage utilisé par le processeur à l'exécution (ou des traditions de programmation pour un système d'exploitation donné), aussi n'est-il pas recommandé de les utiliser.

.

Notes et références

Notes

Références

Voir aussi

Articles connexes 

Unité de mesure informatique