%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %% > [!nav] > ↩ [[Code et Développement/Programmation/Systèmes de numération/Systèmes de numération|Accueil · Systèmes de numération]] > > | [[Code et Développement/Programmation/Systèmes de numération/01_Les bases\|← Les bases]] | | > |:---|---:| %% nav-fin %% # Stockage des Informations Numériques : Bits, Octets et Représentations ## Introduction Dans ce chapitre nous verrons comment les informations sont *stockées* et *représentées* au niveau le plus bas de nos machines. Ce chapitre explore les unités de base du stockage : le **bit** et l'**octet**. --- ## 1. Le Bit : L’Unité Fondamentale de l’Information Le **bit** est l’unité d’information la plus petite qu’un ordinateur peut traiter. > [!definition] Bit > Un **bit** (contraction de *binary digit*, "chiffre binaire") est une unité d’information qui ne peut prendre que deux états possibles : **0** ou **1**. > > Ces deux états sont souvent associés à des concepts logiques comme "faux/vrai", "ouvert/fermé", "bas/haut", ou à des états physiques comme "tension basse/tension haute", "magnétisé/démagnétisé", "lumière éteinte/lumière allumée". Chaque bit représente un choix binaire, et c’est en combinant un grand nombre de ces bits que l’on peut représenter des informations complexes. > [!note] Représentation Physique > Dans un circuit électronique, un bit est généralement représenté par un niveau de tension électrique. Par exemple, 0V pour un '0' et 5V (ou 3.3V, 1.8V selon la technologie) pour un '1'. Sur un disque dur, il peut s’agir de l’orientation d’un champ magnétique. Dans la fibre optique, c’est la présence ou l’absence de lumière. --- ## 2. L’Octet : l’unité de stockage courante L'**octet** regroupe plusieurs bits. C’est l’unité de stockage et de traitement la plus utilisée en informatique. > [!definition] Octet (Byte) > Un **octet** (en anglais : *byte*) est un regroupement de **8 bits**. C’est l’unité de données adressable la plus petite dans la plupart des architectures informatiques modernes. Pourquoi 8 bits ? Historiquement, cette taille est devenue un standard pour plusieurs raisons, notamment la capacité à représenter un caractère alphanumérique dans le code ASCII (qui utilisait 7 bits, puis 8 bits pour l’extension). ### 2.1. Capacité de Représentation d’un Octet Avec 8 bits, un octet peut représenter $2^8$ états différents. $ 2^8 = 256 $ Ces 256 états peuvent être interprétés de diverses manières, selon le contexte : > [!example] Valeurs d’un Octet > * **Nombres non signés** : Un octet peut représenter n’importe quel nombre entier de 0 à 255. > * `00000000` représente 0 > * `00000001` représente 1 > * ... > * `11111111` représente 255 > * **Nombres signés** : Si on veut représenter des nombres positifs et négatifs, un bit est généralement utilisé pour le signe. Avec la représentation en complément à deux (section 3), un octet représente les nombres de -128 à +127. > * **Caractères** : Un octet peut représenter un caractère unique (lettre, chiffre, symbole) selon une table d’encodage comme ASCII ou les premières pages de code d’Unicode. > * **Couleurs** : Un octet peut définir l’intensité d’une composante de couleur (rouge, vert ou bleu) dans un modèle RVB (RGB), allant de 0 (absence) à 255 (intensité maximale). ### 2.2. Multiples de l’Octet Pour exprimer des quantités de données plus importantes, on utilise des multiples de l’octet. Il faut distinguer les préfixes du Système international (SI, décimaux) des préfixes binaires. | Symbole SI | Préfixe SI (décimal) | Valeur (base 10) | Symbole Binaire | Préfixe Binaire (IEC) | Valeur (base 2) | | :--------- | :------------------- | :---------------- | :-------------- | :-------------------- | :-------------- | | Ko | Kilooctet | $10^3$ octets | Kio | Kibioctet | $2^{10}$ octets | | Mo | Mégaoctet | $10^6$ octets | Mio | Mébioctet | $2^{20}$ octets | | Go | Gigaoctet | $10^9$ octets | Gio | Gibioctet | $2^{30}$ octets | | To | Téraoctet | $10^{12}$ octets | Tio | Tébioctet | $2^{40}$ octets | > [!warning] Confusion Ko / Kio > Dans le langage courant, « kilooctet » (Ko) désigne parfois $2^{10}$ = 1024 octets. Selon le Système international, kilo vaut $10^3$ = 1000. > > * Les fabricants de disques durs utilisent les préfixes décimaux : $1 \text{ To} = 10^{12}$ octets. > * Windows calcule les tailles en puissances de 2, mais les note « Ko », « Mo », « Go ». Un « Go » affiché par Windows vaut $2^{30}$ octets, soit 1 Gio. > * macOS calcule les tailles en puissances de 10 depuis la version 10.6 (2009). Un Go affiché par macOS vaut $10^9$ octets. > > Un disque vendu 1 To apparaît comme 931 « Go » dans Windows et comme 1 To dans macOS. > > Pour être rigoureux, on note Kio, Mio, Gio et Tio les multiples de 1024. **À manipuler :** choisissez une valeur et une unité. Le composant convertit vers toutes les unités et montre le calcul. Le bouton « Question au hasard » pose une conversion à faire de tête, comme au test. ```sq-unites valeur: 2 unité: Gio ``` --- ## 3. Les entiers signés : le complément à deux Cette section complète le cours. Elle n'est pas évaluée au test d'entraînement. Pour représenter des entiers négatifs, on utilise le **complément à deux** sur un nombre fixe de bits. * Le bit de gauche vaut 1 pour un nombre négatif et 0 pour un nombre positif. * Sur 8 bits, on représente les entiers de -128 à +127. * Pour écrire -x : on écrit x en binaire sur 8 bits, on inverse chaque bit, puis on ajoute 1. > [!example] Écrire -5 sur 8 bits > * 5 en binaire : `00000101` > * Bits inversés : `11111010` > * Ajout de 1 : `11111011` > > Donc -5 s'écrit `11111011`. **À manipuler :** écrivez un entier négatif et observez les trois étapes. ```sq-binaire opération: complément valeur: -5 bits: 8 ``` L'ajout de 1 utilise l'addition binaire. On additionne de droite à gauche, comme en décimal. 1 + 1 = 10 en binaire : on pose 0 et on retient 1. **À manipuler :** additionnez deux nombres binaires, colonne par colonne. ```sq-binaire opération: addition a: 1011 b: 0110 ``` %% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %% > [!nav] > ↩ [[Code et Développement/Programmation/Systèmes de numération/Systèmes de numération|Accueil · Systèmes de numération]] > > | [[Code et Développement/Programmation/Systèmes de numération/01_Les bases\|← Les bases]] | | > |:---|---:| %% nav-fin %% --- 🗓️ Historique Dernière mise à jour : `01 novembre 2025` Rédigé par : [[Julien DUQUENNOY]]