L' octet est une unité d'information numérique généralement composée de huit bits . Historiquement, l'octet désignait le nombre de bits nécessaires pour encoder un caractère de texte dans un ordinateur , et c'est pourquoi il constitue la plus petite unité de mémoire adressable dans de nombreuses architectures informatiques . Afin de distinguer les octets de taille quelconque de la définition courante à 8 bits , les documents de protocoles réseau , tels que le protocole Internet ( RFC 791 ), utilisent le terme « octet » pour désigner un octet de 8 bits . Les bits d'un octet sont généralement numérotés de 0 à 7 ou de 7 à 0 selon l' ordre d'endianness .
La taille d'un octet a toujours dépendu du matériel et aucune norme définitive n'en imposait la taille. Des tailles de 1 à 48 bits ont été utilisées. Le codage de caractères sur six bits était une implémentation courante dans les premiers systèmes d'encodage, et les ordinateurs utilisant des octets de six et neuf bits étaient fréquents dans les années 1960. Ces systèmes disposaient souvent de mots mémoire de 12, 18, 24, 30, 36, 48 ou 60 bits, correspondant à 2, 3, 4, 5, 6, 8 ou 10 octets de six bits, et ont persisté, dans les systèmes anciens, jusqu'au XXIe siècle. À cette époque, les groupes de bits dans le flux d'instructions étaient souvent appelés syllabes ou blocs , avant que le terme octet ne se généralise.
La norme de facto moderne de huit bits, telle que documentée dans la norme ISO/IEC 2382-1:1993, est une puissance de deux pratique , permettant d'encoder les valeurs binaires de 0 à 255 pour un octet, car 2⁸ vaut 256. La norme internationale CEI 80000-13 a codifié cette signification courante. De nombreux types d'applications utilisent des informations représentables sur huit bits ou moins, et les concepteurs de processeurs optimisent généralement leurs processeurs pour cet usage. La popularité des principales architectures informatiques commerciales a contribué à l'adoption généralisée de l'octet de 8 bits. Les architectures modernes utilisent généralement des mots de 32 ou 64 bits, composés respectivement de quatre ou huit octets.
Le symbole de l'octet a été désigné par la lettre majuscule B par la Commission électrotechnique internationale (CEI) et l'Institut des ingénieurs électriciens et électroniciens (IEEE). À l'échelle internationale, l' octet définit explicitement une séquence de huit bits, éliminant ainsi l'ambiguïté potentielle du terme « octet ». Le symbole de l'octet, « o », élimine également l'ambiguïté du symbole « B » entre octet et octet .
Étymologie et histoire
Le terme « octet » a été inventé par Werner Buchholz en juin 1956, lors des premières phases de conception de l' ordinateur IBM Stretch , qui utilisait l'adressage au bit et des instructions à longueur de champ variable (VFL) avec une taille en octet codée dans l'instruction. Il s'agit d'une réorthographe délibérée de « bite » pour éviter toute mutation accidentelle en « bit » .
Une autre origine du terme « octet » pour désigner des groupes de bits inférieurs à la taille d'un mot informatique, et en particulier des groupes de quatre bits , est rapportée par Louis G. Dooley. Ce dernier affirmait avoir inventé le terme alors qu'il travaillait avec Jules Schwartz et Dick Beeler sur un système de défense aérienne appelé SAGE au MIT Lincoln Laboratory en 1956 ou 1957, développé conjointement par Rand , le MIT et IBM. Plus tard, le langage JOVIAL de Schwartz a effectivement utilisé ce terme, mais l'auteur se souvenait vaguement qu'il provenait de la norme AN/FSQ-31 .
Les premiers ordinateurs utilisaient diverses représentations décimales codées en binaire (BCD) sur quatre bits et les codes à six bits pour les motifs graphiques imprimables, couramment utilisés par l'armée de terre ( FIELDATA ) et la marine américaines . Ces représentations comprenaient des caractères alphanumériques et des symboles graphiques spéciaux. Ces ensembles ont été étendus en 1963 à sept bits, donnant naissance à la norme ASCII ( American Standard Code for Information Interchange ), également appelée norme fédérale de traitement de l'information . Cette norme a remplacé les codes de téléscripteur incompatibles utilisés par différentes branches du gouvernement américain et les universités dans les années 1960. L'ASCII intégrait la distinction entre les alphabets majuscules et minuscules et un ensemble de caractères de contrôle facilitant la transmission du langage écrit, ainsi que les fonctions des périphériques d'impression, telles que l'avance de page et le saut de ligne, et le contrôle physique ou logique du flux de données sur le support de transmission. Au début des années 1960, tout en participant activement à la normalisation de l'ASCII, IBM a simultanément introduit dans sa gamme de produits System/360 le code d'échange décimal binaire étendu (EBCDIC) à huit bits, une extension de ses représentations décimales binaires (BCDIC) à six bits utilisées dans les perforatrices de cartes précédentes. L'importance du System/360 a conduit à l'adoption généralisée de la taille de stockage à huit bits, bien que les schémas d'encodage EBCDIC et ASCII diffèrent dans le détail.
Au début des années 1960, AT&T a introduit la téléphonie numérique sur les lignes interurbaines . Celles-ci utilisaient le codage μ-law sur huit bits . Cet investissement important promettait de réduire les coûts de transmission des données sur huit bits.
Dans le premier volume de * The Art of Computer Programming* (publié pour la première fois en 1968), Donald Knuth utilise le terme « octet » dans son ordinateur hypothétique MIX pour désigner une unité qui « contient une quantité indéterminée d’informations… pouvant contenir au moins 64 valeurs distinctes… et au plus 100 valeurs distinctes. Sur un ordinateur binaire, un octet doit donc être composé de six bits ». Il note que « depuis 1975 environ, le mot octet désigne une séquence de huit chiffres binaires précisément… Lorsque nous parlerons d’octets en lien avec MIX, nous nous en tiendrons à l’ancien sens du mot, celui d’avant la normalisation des octets. »
Le développement des microprocesseurs huit bits dans les années 1970 a popularisé cette capacité de stockage. Des microprocesseurs comme l' Intel 8080 , prédécesseur direct du 8086 , pouvaient également effectuer un petit nombre d'opérations sur les paires de quatre bits d'un octet, telles que l'instruction d'addition et d'ajustement décimal (DAA). Une quantité de quatre bits est souvent appelée un quartet (ou nibble ), et se représente aisément par un seul chiffre hexadécimal .
Le terme octet spécifie sans ambiguïté une taille de huit bits. Il est largement utilisé dans les définitions de protocoles .
Historiquement, le terme « octade » était également utilisé pour désigner huit bits, du moins en Europe occidentale ; toutefois, cet usage est aujourd’hui désuet. L’origine exacte du terme demeure incertaine, mais on le retrouve dans des sources britanniques, néerlandaises et allemandes des années 1960 et 1970, ainsi que dans la documentation des ordinateurs centraux Philips .
Symbole de l'unité
Le symbole d'unité pour l'octet est spécifié dans IEC 80000-13 , IEEE 1541 et le format d'échange métrique comme le caractère majuscule B.
Dans le Système international de grandeurs (SIGC), le bel (B) est également le symbole du bel , une unité de rapport de puissance logarithmique nommée d'après Alexander Graham Bell , ce qui crée une confusion avec la norme CEI. Cependant, le risque de confusion est faible, car le bel est une unité rarement utilisée. Il est principalement employé sous sa forme décimale, le décibel (dB), pour mesurer la puissance du signal et le niveau de pression acoustique , tandis que le décioctet (dB), unité correspondant à un dixième d'octet, et les autres fractions, ne sont utilisés que dans les unités dérivées, telles que les débits de transmission.
La lettre minuscule o pour octet est définie comme le symbole de l'octet dans la norme CEI 80000-13 et est couramment utilisée dans des langues telles que le français , et est également combinée avec des préfixes métriques pour les multiples, par exemple ko et Mo.
Unités multi-octets
| Décimal | Binaire | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Valeur | SI | Valeur | IEC | JEDEC | |||||
| 1000 | 10 3 | ko | kilooctet | 1024 | 2 10 | KiB | kibioctet | KB | kilooctet |
| 1000 2 | 10 6 | MB | mégaoctets | 1024 2 | 2 20 | MiB | mébioctet | MB | mégaoctets |
| 1000 3 | 10 9 | GB | gigaoctets | 1024 3 | 2 30 | GiB | gibioctet | GB | gigaoctets |
| 1000 4 | 10 12 | TB | téraoctet | 1024 4 | 2 40 | TiB | tébibyte | TB | téraoctet |
| 1000 5 | 10 15 | PB | pétaoctet | 1024 5 | 2 50 | PiB | pébibyte | — | |
| 1000 6 | 10 18 | EB | exaoctet | 1024 6 | 2 60 | EiB | exbioctet | — | |
| 1000 7 | 10 21 | ZB | zettaoctet | 1024 7 | 2 70 | ZiB | zébibyte | — | |
| 1000 8 | 10 24 | YB | yottabyte | 1024 8 | 2 80 | YiB | yobibyte | — | |
| 1000 9 | 10 27 | RB | ronnabyte | 1024 9 | 2 90 | Côte | robibyte | — | |
| 1000 10 | 10 30 | QB | quettabyte | 1024 10 | 2 100 | QiB | quebibyte | — | |
| Ordres de grandeur des données | |||||||||
Les multiples unitaires de l'octet sont définis dans un système métrique basé sur les puissances de 10 , suivant le Système international d'unités (SI), qui définit, par exemple, le préfixe kilo comme 1000 (10³ ) , ainsi que dans un système binaire basé sur les puissances de deux . Historiquement, le système binaire utilisait les mêmes préfixes que le système métrique, mais la quantification était différente. La nomenclature de ce dernier système a engendré de la confusion. Les systèmes basés sur les puissances de 10 utilisent les préfixes SI standard ( kilo , méga , giga , etc.) et leurs symboles correspondants (k, M, G, etc.). Le système binaire moderne utilise les préfixes kibi , mébi , gibi , etc., et leurs symboles correspondants (Ki, Mi, Gi, etc.). L'usage historique du système binaire conserve les préfixes K, M et G.
Bien que la différence entre les interprétations décimale et binaire soit relativement faible pour le kilooctet (environ 2 % de moins que le kibioctet), les systèmes divergent de plus en plus à mesure que les unités augmentent (l'écart relatif augmente de 2,4 % tous les trois ordres de grandeur). Par exemple, un téraoctet (calculé sur une puissance de 10) est environ 9 % plus petit qu'un tébioctet (calculé sur une puissance de 2).
Unités basées sur les puissances de 10 (préfixes SI)
La définition des préfixes à l'aide de puissances de 10 — où 1 kilooctet (symbole kB) est défini comme égal à 1 000 octets — est recommandée par la Commission électrotechnique internationale (CEI). La norme CEI définit huit multiples de ce type, jusqu'à 1 yottaoctet (YB), égal à 1 000⁸ octets. Les préfixes supplémentaires ronna- pour 1 000⁹ et quetta- pour 1 000¹⁰ ont été adoptés par le Bureau international des poids et mesures (BIPM) en 2022.
Cette définition est couramment utilisée pour les unités de débit de données dans les réseaux informatiques , les bus internes, les vitesses de transfert des disques durs et des supports de stockage flash, les contrats des fournisseurs d'accès à Internet , ainsi que pour les capacités de la plupart des supports de stockage , notamment les disques durs et les SSD , le stockage flash , les CD , les DVD et les Blu-ray . Parmi les systèmes d'exploitation utilisant cette définition figurent Android (et ses dérivés), 37 ] HarmonyOS et bureau Gnome . Elle est avec les préfixes SI en informatique , comme les fréquences d' horloge des processeurs ou les mesures de performance .
Le système IBM 360 et les systèmes de disques et de bandes associés utilisaient 8 bits pour la taille de l'octet et documentaient les capacités en unités décimales. Les premiers systèmes 8, 5+1/4 - et 3+Les disquettes de 1/2 pouce offraient des capacités en multiples de 1024, utilisant « KB » plutôt que le « Kio », plus précis. Les disquettes ultérieures, plus grandes, de 8 et 5 pouces, ont vu le jour.+1/4 - et 3+Les disquettes 1/2 pouce affichaient les capacités selon une notation hybride, c'est-à-dire en multiples de 1024 000, en utilisant « KB » = 1024 octets et « MB » = 1024 000 octets .+Les disquettes de 1/4 de pouce utilisaient le système décimal même si elles utilisaient des secteurs de 128 et 256 octets. Les disques durs utilisaient principalement des blocs de 256 octets, puis de 512 octets, avant que les blocs de 4096 octets ne deviennent la norme.
Unités basées sur les puissances de 2 (préfixes CEI)
Un système d'unités basé sur les puissances de 2, dans lequel 1 kibioctet (Kio) équivaut à 1 024 octets (soit 2¹⁰ octets ), a été créé par la CEI pour résoudre les problèmes liés à l'utilisation incorrecte des préfixes SI . Ce système est défini par la norme internationale CEI 80000-13, soutenue par les organismes de normalisation nationaux et internationaux ( BIPM , CEI , NIST ). La norme CEI définit dix multiples de ce type, jusqu'à 1 quebioctet (Qio), soit 1 024 × 10¹⁰ octets [42]. unités sont rarement utilisés en pratique . KDE et les applications basées sur la boîte à outils Qt constituent des exceptions notables , mais l'application de configuration de KDE permet de basculer vers le SI
Une convention historique de nomenclature pour les mêmes unités, selon laquelle 1 kilooctet (Ko) équivaut à 1 024 octets , 1 mégaoctet (Mo) à 1 024² octets et 1 gigaoctet (Go) à 1 024³ octets , est mentionnée par une norme JEDEC des années 1990 utilisée pour la mémoire vive (RAM ). Seules les trois premières unités (jusqu'à Go) sont mentionnées par cette norme, qui ne fait aucune mention du téraoctet (To) et des unités supérieures. Ces unités ne peuvent être identifiées que par comparaison à l'aide de différents logiciels. La majuscule du K dans Ko peut parfois constituer un indice. Bien que source de confusion et erronée, cette convention est utilisée par le système d'exploitation Microsoft Windows et pour la capacité de mémoire vive , comme la mémoire principale et la taille du cache du processeur , ainsi que dans le marketing et la facturation de certaines entreprises de télécommunications, telles que Vodafone , AT&T , Orange et Telstra . Concernant la capacité de stockage , la convention historique a été utilisée par macOS et iOS jusqu'à Mac OS X 10.5 Leopard et iOS 10, après quoi ils sont passés à des unités basées sur les puissances de 10
Unités paroissiales
Différents fabricants d'ordinateurs ont créé des termes pour désigner des données de tailles variées, parfois même au sein d'un même fabricant. Parmi ces termes, on trouve « double mot » , « demi-mot » , « mot long » , « quadruple mot » , « slab » , « supermot » et « syllabe » . Il existe également des termes informels, comme « demi-octet » et « nybble » pour 4 bits, ou encore « K octal » pour 1000 8 .
Historique des définitions contradictoires

Quand je vois un disque annoncé avec une capacité d'un mégaoctet, qu'est-ce que cela signifie ? Il y a trois réponses possibles, et je me demande si quelqu'un sait laquelle est la bonne… Ce n'est pas une question cruciale, car la différence entre les capacités minimale et maximale est inférieure à 5 %. Néanmoins, il serait intéressant de connaître la norme, ou s'il en existe une.
— Allan D. Pratt de Small Computers in Libraries , 1982
modernes possède une architecture binaire qui rend la définition des unités de mémoire basée sur les puissances de 2 la plus pratique. L'utilisation du préfixe métrique kilo pour les multiples binaires est apparue par commodité, car1024 est approximativement1000. 27 Cette définition était populaire dans les premières décennies de l' informatique personnelle , avec des produits comme le format de disquette Tandon DD 5 1/4 pouces (contenant368 640 octets) étant annoncé comme « 360 Ko », suite àLa convention des 1024 octets n'était cependant pas universelle. La disquette Shugart SA-400 de 5 1/4 pouces contenait 109 375 octets non formatés et était annoncée comme ayant une capacité de « 110 Ko », selon la convention des 1000 octets . De même, la disquette DEC RX01 de 8 pouces (1975) contenait…256 256 octets formatés, et annoncé comme « 256 ko ». Certains périphériques étaient annoncés en utilisant un mélange des deux définitions : notamment, les disquettes annoncées comme ayant une capacité de « 1,44 Mo » avaient une capacité réelle de1440 KiB , soit l'équivalent de 1,47 Mo ou 1,41 Mio.
En 1995, le Comité interdivisionnel de nomenclature et de symboles de l'Union internationale de chimie pure et appliquée (UICPA) a tenté de résoudre cette ambiguïté en proposant un ensemble de préfixes binaires pour les puissances de 1024, notamment kibi (kilobinaire), mébi (mégabinaire) et gibi (gigabinaire).
En décembre 1998, la CEI a remédié à ces multiples usages et définitions en adoptant les préfixes proposés par l'IUPAC (kibi, mébi, gibi, etc.) pour désigner sans ambiguïté les puissances de 1024. Ainsi, un kibioctet (1 KiB) vaut 1024 × 1 octet = 1024 octets, un mébioctet (1 Mio) vaut 1024 × 2 octets =1 048 576 octets, et ainsi de suite.
En 1999, Donald Knuth a suggéré d'appeler le kibioctet un « grand kilooctet » ( KKB ).
Définitions standard modernes
La CEI a adopté la proposition de l'IUPAC et a publié la norme en janvier 1999. Les préfixes CEI font partie du Système international de grandeurs . La CEI a précisé que le kilooctet ne devait être utilisé que pour désigner…1000 octets.
Poursuites judiciaires concernant la définition
Les poursuites judiciaires découlant d'une confusion présumée des consommateurs quant aux définitions binaire et décimale des multiples de l'octet se sont généralement soldées par une victoire pour les fabricants, les tribunaux statuant que la définition légale du gigaoctet (Go) est 1 Go = 1 Go1 000 000 000 (10⁹ ) octets (la définition décimale), plutôt que la définition binaire (2³⁰ , c'est-à-dire,1 073 741 824 ). Plus précisément, la Cour de district des États-Unis pour le district nord de la Californie a statué que « le Congrès américain a considéré la définition décimale du gigaoctet comme étant la définition « préférée » aux fins du « commerce américain » [...] La législature californienne a également adopté le système décimal pour toutes les « transactions effectuées dans cet État » . »
Des poursuites antérieures s'étaient soldées par des accords à l'amiable sans décision de justice sur la question, comme par exemple une action en justice contre le fabricant de disques durs Western Digital . Western Digital a conclu un accord et a ajouté des mentions légales explicites sur ses produits, indiquant que la capacité utilisable pouvait différer de la capacité annoncée. Seagate a été poursuivi pour des motifs similaires et a également conclu un accord.
Exemples pratiques
| Unité | Équivalent approximatif |
|---|---|
| peu | une variable booléenne indiquant vrai (1) ou faux (0) |
| octet | un caractère latin de base . |
| kilooctet | texte de « Jabberwocky » |
| une favicon typique | |
| mégaoctets | texte de Harry Potter et la Coupe de Feu |
| gigaoctets | environ 20 minutes de vidéo sur un DVD de 4,7 Go |
| 1½ CD standard | |
| téraoctet | le plus grand disque dur grand public en 2007 |
| 20 Blu-ray standard ou 213 DVD | |
| pétaoctet | 2000 ans de musique encodée en MP3 |
| exaoctet | trafic Internet mensuel mondial en 2004 |
| zettaoctet | trafic Internet annuel mondial en 2016 (connu sous le nom d'ère du zettaoctet ) |
usages courants
De nombreux langages de programmation définissent le type de données byte .
Java , .NET ( C# , F# , VB.NET ) , Rust , D , Go , Swift , JavaScript , Python , Ruby définissent et utilisent tous des octets de 8 bits capables de contenir exactement 256 valeurs différentes.
Les langages de programmation C et C++ définissent un octet comme une « unité de stockage de données adressable suffisamment grande pour contenir n'importe quel caractère du jeu de caractères de base de l'environnement d'exécution » (article 3.6 de la norme C). La norme C exige que le type de données entier `unsigned char` puisse contenir au moins 256 valeurs différentes et soit représenté par au moins huit bits (article 5.2.4.2.1). Différentes implémentations de C et C++ réservent 8, 9, 16, 32 ou 36 bits pour le stockage d'un octet. De plus, les normes C et C++ exigent qu'il n'y ait pas d'espace entre deux octets. Cela signifie que chaque bit en mémoire fait partie d'un octet. En C++17 , un std::bytetype énuméré a été introduit, représenté sous la forme `int` unsigned char, qui sert à modéliser une collection de bits et n'est ni un type arithmétique ni un type caractère. Il est défini comme une énumération pour empêcher l'utilisation arithmétique, mais n'a pas de constantes définies (il est plutôt utilisé comme ). bytex{0xFF};
Cependant, la quasi-totalité des logiciels modernes ne fonctionneraient pas s'ils étaient compilés avec une taille d'octet autre que 8 bits. De plus, la norme POSIX stipule qu'« un octet est composé d'une séquence contiguë de 8 bits » . Aujourd'hui, les octets non codés sur 8 bits ne trouvent plus que des applications de niche, comme dans les DSP .
Dans les systèmes de transmission de données, l'octet est utilisé comme une séquence contiguë de bits dans un flux de données série, représentant la plus petite unité de données identifiable. Pour la communication asynchrone, une unité de transmission complète comprend généralement un bit de départ, un ou deux bits d'arrêt et éventuellement un bit de parité ; sa taille peut donc varier de sept à douze bits pour cinq à huit bits de données. Pour la communication synchrone , le contrôle d'erreurs utilise généralement les octets situés à la fin d'une trame .