Pour ceux qui souhaitent comprendre comment fonctionne réellement un ordinateur personnel, cet article explore de façon simple quelques concepts fondamentaux.

1. Les composants fondamentaux d'un ordinateur

Un ordinateur est composé de plusieurs éléments essentiels qui travaillent ensemble :

1.1 Le matériel (hardware)

  • Le processeur (CPU) : C'est le "cerveau" de l'ordinateur qui exécute les instructions des programmes.
  • La mémoire vive (RAM) : Elle stocke temporairement les données et les programmes en cours d'utilisation.
  • Le disque dur ou SSD : Il conserve les données même quand l'ordinateur est éteint.
  • La carte mère : Elle relie tous les composants entre eux.
  • Les périphériques d'entrée/sortie : Comme le clavier, la souris, l'écran, qui permettent d'interagir avec l'ordinateur.

 

1.2 Le logiciel (software)

  • Le système d'exploitation : Comme Windows, macOS ou Linux, il gère l'ensemble des ressources de l'ordinateur.
  • Les applications : Ce sont les programmes que vous utilisez quotidiennement (navigateur internet, traitement de texte, etc.).

 

 Voir également cet article plus ancien du même nom de ce site : https://clinfo.fr/fr/publications/astuces/92-architecture-des-ordinateurs

 

 

2. Le langage binaire : la base de tout

2.1 Qu'est-ce que le binaire ?

Les ordinateurs ne comprennent que deux états : allumé (1) ou éteint (0). C'est ce qu'on appelle le système binaire. Toutes les données dans un ordinateur sont représentées par des séries de 0 et de 1, qu'on appelle des "bits" (binary digits). Pour illustrer on peut imaginer un interrupteur électrique qui peut être soit allumé (1), soit éteint (0). Un ordinateur contient des millions, voire des milliards de ces "interrupteurs" électroniques miniatures que sont les transistors intégrés dans les circuits.

 

2.2 Les unités de mesure

  • 1 bit : La plus petite unité d'information (0 ou 1)
  • 1 octet (byte) : 8 bits regroupés ensemble
  • 1 kilooctet (Ko) : Environ 1 000 octets
  • 1 mégaoctet (Mo) : Environ 1 million d'octets
  • 1 gigaoctet (Go) : Environ 1 milliard d'octets
  • 1 téraoctet (To) : Environ 1 000 milliards d'octets

Ainsi, une page de texte simple représente environ 2 Ko, une photo de bonne qualité peut faire 2 Mo, et un film en HD peut peser plusieurs Go.

 

 

3. Représentation des nombres entiers

3.1 Les nombres entiers positifs

Pour représenter des nombres entiers positifs, l'ordinateur utilise le système binaire. Voici comment cela fonctionne avec quelques exemples :

  • Le nombre décimal 5 s'écrit 101 en binaire
    • Calcul : (1 × 2²) + (0 × 2¹) + (1 × 2⁰) = 4 + 0 + 1 = 5
  • Le nombre décimal 23 s'écrit 10111 en binaire
    • Calcul : (1 × 2⁴) + (0 × 2³) + (1 × 2²) + (1 × 2¹) + (1 × 2⁰) = 16 + 0 + 4 + 2 + 1 = 23

Chaque position dans le nombre binaire représente une puissance de 2, en partant de la droite :

  • 1ère position (tout à droite) : 2⁰ = 1
  • 2ème position : 2¹ = 2
  • 3ème position : 2² = 4
  • 4ème position : 2³ = 8
  • Et ainsi de suite...

Si un "1" est présent à une position, on ajoute la valeur correspondante ; si c'est un "0", on n'ajoute rien.

 

3.2 Les nombres signés (positifs et négatifs)

Pour représenter les nombres négatifs, l'ordinateur utilise plusieurs méthodes. La plus courante est la méthode du "complément à deux" :

  1. Bit de signe : Dans un octet (8 bits), le bit le plus à gauche indique le signe :
    • 0 = nombre positif
    • 1 = nombre négatif
  2. Pour les nombres positifs : On les écrit normalement, avec le bit de signe à 0.
    • Exemple : +5 en 8 bits = 00000101
  3. Pour les nombres négatifs (complément à deux) :
    • On écrit d'abord le nombre positif correspondant
    • On inverse tous les bits (0 devient 1, et 1 devient 0)
    • On ajoute 1 au résultat
    • Exemple pour -5 en 8 bits :
      • +5 = 00000101
      • Inversion = 11111010
      • Ajout de 1 = 11111011
      • Donc -5 = 11111011

Cette méthode permet à l'ordinateur d'effectuer des calculs avec des nombres négatifs en utilisant les mêmes circuits que pour les nombres positifs.

 

 

4. Représentation du texte

4.1 Le code ASCII

Pour représenter du texte, l'ordinateur associe un nombre à chaque caractère. Le code ASCII (American Standard Code for Information Interchange) est l'un des premiers systèmes de codage utilisés :

  • 'A' = 65 (en décimal) = 01000001 (en binaire)
  • 'B' = 66 (en décimal) = 01000010 (en binaire)
  • 'a' = 97 (en décimal) = 01100001 (en binaire)
  • '1' = 49 (en décimal) = 00110001 (en binaire)
  • Espace = 32 (en décimal) = 00100000 (en binaire)

Ainsi, le mot "Bonjour" est stocké comme une suite de nombres, chacun représentant une lettre :

  • 'B' (66), 'o' (111), 'n' (110), 'j' (106), 'o' (111), 'u' (117), 'r' (114)

 

4.2 Unicode et UTF-8

Le code ASCII ne permettait de représenter que 128 caractères, ce qui est insuffisant pour les langues avec accents, les symboles mathématiques, et les alphabets non-latins (chinois, arabe, cyrillique, etc.).

L'Unicode est un système plus récent qui peut représenter plus de 100 000 caractères différents. UTF-8 est l'encodage le plus courant de l'Unicode, qui utilise de 1 à 4 octets pour représenter chaque caractère :

  • Les caractères ASCII standard utilisent 1 octet
  • Les caractères accentués européens utilisent généralement 2 octets
  • Les caractères asiatiques utilisent souvent 3 octets

Grâce à l'Unicode, votre ordinateur peut afficher et traiter des textes dans presque toutes les langues du monde.

 

 

5. L'architecture de base d'un ordinateur

5.1 L'architecture de von Neumann

La plupart des ordinateurs modernes sont basés sur l'architecture de von Neumann, qui comprend quatre composants principaux :

  1. L'unité de contrôle : Elle coordonne les opérations de l'ordinateur.
  2. L'unité arithmétique et logique (ALU) : Elle effectue les calculs et les opérations logiques.
  3. La mémoire : Elle stocke les données et les instructions.
  4. Les dispositifs d'entrée/sortie : Ils permettent la communication avec l'extérieur.

Ces composants sont reliés par des "bus", qui sont des canaux de communication permettant le transfert des données et des instructions.

 

5.2 Le cycle d'exécution des instructions

Le processeur exécute les instructions selon un cycle appelé "cycle d'instruction" ou "cycle fetch-decode-execute" :

  1. Chargement (Fetch) : Le processeur récupère l'instruction suivante depuis la mémoire.
  2. Décodage (Decode) : Il analyse l'instruction pour déterminer quelle opération effectuer.
  3. Exécution (Execute) : Il réalise l'opération demandée.
  4. Écriture (Write-back) : Il enregistre le résultat en mémoire si nécessaire.

Ce cycle se répète des millions ou des milliards de fois par seconde !

 

 

6. La mémoire et le stockage

6.1 La hiérarchie de la mémoire

Les ordinateurs utilisent plusieurs types de mémoire, organisés en hiérarchie selon leur vitesse d'accès et leur capacité :

  1. Registres : Très rapides mais très petits, situés dans le processeur même.
  2. Mémoire cache : Rapide, de petite taille, située près du processeur (L1, L2, L3).
  3. RAM (Random Access Memory) : Mémoire principale, assez rapide, mais volatile (perd son contenu quand l'ordinateur est éteint).
  4. Stockage permanent : Disque dur (HDD) ou SSD, plus lent mais conserve les données même hors tension.

 

6.2 Comment l'ordinateur retrouve les données

Chaque emplacement dans la mémoire possède une "adresse" unique, comme les numéros des maisons dans une rue. Quand l'ordinateur a besoin d'une donnée, il utilise cette adresse pour la localiser.

Par exemple, l'instruction "lire la valeur à l'adresse 1234" pourrait récupérer le nombre qui y est stocké pour effectuer un calcul.

 

 

7. Les unités de traitement

7.1 Le processeur (CPU)

Le processeur est le composant qui exécute les instructions des programmes. Un processeur moderne contient :

  • Plusieurs "cœurs" qui peuvent traiter des instructions en parallèle
  • Des millions ou milliards de transistors
  • Une fréquence d'horloge mesurée en gigahertz (GHz), qui indique combien d'opérations peuvent être effectuées par seconde

 

7.2 La carte graphique (GPU)

La carte graphique est spécialisée dans le traitement des images et des vidéos. Elle contient son propre processeur et sa propre mémoire, optimisés pour effectuer de nombreux calculs en parallèle.

Les GPUs sont particulièrement importants pour :

  • L'affichage de vidéos en haute définition
  • Les jeux vidéo
  • Les applications de création graphique
  • Certaines applications d'intelligence artificielle

 

8. Comment un programme fonctionne réellement

Exemple d'une simple addition dans un programme : Résultat = 5 + 3

Voici ce qui se passe réellement dans l'ordinateur :

  • Les nombres 5 et 3 sont représentés en binaire (00000101 et 00000011).
  • Ces valeurs sont chargées dans les registres du processeur.
  • L'ALU (unité arithmétique et logique) additionne ces valeurs binaires.
  • Le résultat (00001000, soit 8 en décimal) est stocké dans un autre registre.
  • Cette valeur est ensuite écrite à l'emplacement mémoire associé à la variable "Résultat".
  • Tout cela se passe en une fraction de microseconde !

 

9. Les périphériques et leurs connexions

9.1 Les périphériques d'entrée

Ces dispositifs permettent d'envoyer des informations à l'ordinateur :

  • Clavier
  • Souris
  • Microphone
  • Scanner
  • Webcam

 

9.2 Les périphériques de sortie

Ces dispositifs permettent à l'ordinateur de communiquer des informations vers l'extérieur :

  • Écran
  • Haut-parleurs
  • Imprimante

 

9.3 Les ports et connecteurs

Les périphériques se connectent à l'ordinateur via différents types de ports :

  • USB (Universal Serial Bus) : Pour la plupart des périphériques
  • HDMI : Pour les écrans et téléviseurs
  • Jack audio : Pour les écouteurs et microphones
  • Ethernet : Pour la connexion réseau filaire

 

10. Quelques conseils pratiques

10.1 Comment identifier les composants de votre ordinateur

Sous Windows, On peut afficher les caractéristiques de son ordinateur :

  • Cliquer sur le bouton Démarrer (icône Windows)
  • Taper "Système" et cliquer sur "Informations système"
  • S’affichent alors le type de processeur, la quantité de RAM, etc.

 

10.2 Comprendre les performances

  • Processeur : Plus la fréquence (GHz) est élevée et plus il y a de cœurs, plus l'ordinateur est rapide pour les tâches complexes.
  • RAM : Plus vous avez de RAM (8 Go, 16 Go, etc.), plus vous pouvez exécuter de programmes simultanément sans ralentissement.
  • Stockage : Un SSD est beaucoup plus rapide qu'un disque dur traditionnel (HDD) pour démarrer l'ordinateur et lancer des programmes.

 

10.3 Entretien de base

  • Redémarrer régulièrement son ordinateur pour libérer la mémoire
  • Supprimer les programmes qu’on n’utilise pas
  • Éviter d'avoir trop de programmes qui démarrent automatiquement
  • Garder son système d'exploitation à jour

 

11. Comment l'ordinateur différencie le texte des nombres

Un ordinateur ne "connaît" que des séquences de bits (0 et 1), donc il a besoin d'un système pour distinguer si ces bits représentent du texte ou des nombres. Voici comment cela fonctionne.

 

11.1 Le contexte d'utilisation

La différence principale vient du contexte dans lequel les données sont utilisées et du type de données déclaré dans un programme :

  • Quand on ouvre un logiciel de traitement de texte comme Word, l'ordinateur sait qu'il doit interpréter les données comme du texte.
  • Quand on ouvre un tableur comme Excel, il sait que certaines cellules contiennent des nombres et d'autres du texte.

 

11.2 Les métadonnées et types de données

Dans la mémoire de l'ordinateur, chaque donnée est accompagnée d'informations sur son type :

  • Un programme définit explicitement si une variable contient un nombre entier, un nombre à virgule, ou une chaîne de caractères (texte).
  • Par exemple, dans le code d'un programme :
  • Nombre = 123 // L'ordinateur traite ceci comme un nombre
  • Texte = "123" // L'ordinateur traite ceci comme du texte

 

11.3 Encodage différent

Même si visuellement "123" peut sembler identique qu'il s'agisse d'un nombre ou d'un texte, l'encodage interne est différent :

  • Le nombre 123 sera stocké directement en binaire : 01111011
  • Le texte "123" sera stocké comme trois caractères ASCII/Unicode séparés :
    • '1' = code ASCII 49 = 00110001
    • '2' = code ASCII 50 = 00110010
    • '3' = code ASCII 51 = 00110011

Donc pour le texte "123", l'ordinateur stocke en réalité : 00110001 00110010 00110011.

 

Un exemple concret

Imaginons qu’on tape "123" dans un document :

  • Quand on appuie sur la touche "1" :
    • Le clavier envoie un code à l'ordinateur
    • Le système d'exploitation traduit ce code en caractère '1' (code ASCII 49)
    • Ce caractère est stocké comme texte (00110001)
    • Si on est dans un traitement de texte, il restera du texte.
    • Si on est dans une calculatrice ou un champ numérique d'un formulaire, le programme convertira ce texte en sa valeur numérique (01111011) pour pouvoir effectuer des calculs.

 

11.4 Les opérations révèlent la différence

La différence devient évidente lors des opérations :

  • Avec des nombres : 123 + 456 = 579
  • Avec du texte : "123" + "456" = "123456" (concaténation de texte)

 

11.5 Les en-têtes de fichiers

Les fichiers contiennent souvent des en-têtes qui indiquent leur format et le type de données qu'ils contiennent :

  • Un fichier texte (.txt) sera interprété caractère par caractère
  • Un fichier binaire comme une image ou un exécutable sera interprété selon des règles spécifiques à son format

 

11.6 La conversion entre types

Quand nécessaire, l'ordinateur peut convertir entre texte et nombre :

  • Pour transformer le texte "123" en nombre 123, il doit :
    • Identifier chaque caractère ('1', '2', '3')
    • Calculer la valeur correspondante (1×100 + 2×10 + 3×1)
  • Pour transformer le nombre 123 en texte "123", il doit :
    • Décomposer le nombre (100 + 20 + 3)
    • Convertir chaque chiffre en son code ASCII correspondant

Cette distinction entre texte et nombres est essentielle pour le fonctionnement des programmes informatiques, et c'est pourquoi des erreurs peuvent survenir quand on tente de faire des opérations mathématiques sur du texte ou vice-versa sans conversion appropriée.

 

 

12. Structure d'un fichier exécutable (.exe)

12.1 Vue d'ensemble

Un fichier .exe est un programme qui peut être directement exécuté par le système d'exploitation Windows. Ce n'est pas un simple fichier texte, mais un fichier binaire structuré contenant :

  • Des en-têtes avec des métadonnées
  • Du code machine (instructions en langage binaire)
  • Des ressources (images, icônes, textes, etc.)
  • Des tables de données
  • Des informations de relocalisation

 

12.2 L'en-tête du fichier (PE Header)

Tout fichier .exe moderne sous Windows utilise le format PE (Portable Executable) :

En-tête DOS (DOS Header)

  • Commence par les caractères "MZ" (les initiales de Mark Zbikowski, l'un des développeurs de MS-DOS)
  • Contient un petit programme DOS qui affiche "This program cannot be run in DOS mode" si on essaie de l'exécuter sous DOS
  • Taille : 64 octets

Stub DOS

Un petit programme qui s'exécute sous DOS pour afficher le message d'erreur

Présent pour la compatibilité avec les anciens systèmes

En-tête PE (PE Header)

  • Commence par la signature "PE\0\0"
  • Contient des informations sur le type de machine cible (32 bits, 64 bits)
  • Indique la date et l'heure de création
  • Précise les caractéristiques du fichier (exécutable, DLL, etc.)

En-tête optionnel (Optional Header)

  • Malgré son nom, il est obligatoire pour les exécutables
  • Contient des informations cruciales comme :
    • L'adresse du point d'entrée (où le programme commence l'exécution)
    • La taille requise en mémoire
    • La version du système d'exploitation requise
    • Les tailles des différentes sections

Table des sections

  • Liste toutes les sections du fichier avec leurs attributs
  • Chaque entrée contient le nom de la section, sa taille, son adresse virtuelle, etc.

13.3 Les sections du fichier

Un fichier .exe est divisé en plusieurs sections, chacune avec un rôle spécifique :

Section .text

  • Contient le code exécutable (les instructions machine)
  • Généralement en lecture seule et exécutable
  • C'est ici que se trouve réellement le programme que vous exécutez

Section .data

  • Contient les variables globales initialisées
  • Accessible en lecture et écriture pendant l'exécution

Section .rdata ou .rodata

  • Contient les données en lecture seule (constantes, chaînes de caractères)
  • Ne peut pas être modifiée pendant l'exécution

Section .bss

  • Réserve de l'espace pour les variables globales non initialisées
  • N'occupe pas d'espace dans le fichier mais seulement en mémoire

Section .rsrc

  • Contient les ressources du programme :
    • Icônes
    • Images
    • Boîtes de dialogue
    • Menus
    • Chaînes de caractères (pour la traduction)
    • Informations de version

Section .reloc

  • Contient les informations de relocalisation
  • Permet d'ajuster les adresses si le programme est chargé à une adresse différente de celle prévue

Section .idata

  • Contient la table d'importation
  • Liste les fonctions externes utilisées par le programme (provenant de DLLs)

Section .edata

  • Contient la table d'exportation (pour les DLLs)
  • Liste les fonctions que ce fichier met à disposition d'autres programmes

13.4 Processus de chargement d'un .exe

Quand on lance un fichier .exe :

  • Lecture des en-têtes: Le système d'exploitation lit l'en-tête PE pour déterminer comment charger le programme
  • Allocation de mémoire: Il réserve la quantité de mémoire nécessaire indiquée dans l'en-tête
  • Chargement des sections: Chaque section est chargée à l'adresse virtuelle spécifiée
  • Résolution des importations: Le système charge les DLLs nécessaires et résout les adresses des fonctions importées
  • Relocalisations: Si nécessaire, les adresses sont ajustées
  • Protection de la mémoire: Chaque section reçoit les protections appropriées (lecture, écriture, exécution)
  • Exécution: Le contrôle est transféré au point d'entrée indiqué dans l'en-tête

13.5 Différences entre .exe et autres formats

  • .exe: Programme exécutable Windows
  • .dll: Bibliothèque de fonctions partagées (Dynamic Link Library)
  • .com: Ancien format exécutable simple (pas de structure PE)
  • .sys: Pilote système (driver)
  • .msi: Package d'installation
  • Sur d'autres systèmes d’exploitation :
    • Linux : formats ELF (pas d'extension obligatoire)
    • macOS : formats Mach-O (pas d'extension obligatoire)

 

13.6 Protection et sécurité

Les fichiers .exe modernes contiennent souvent :

  • Signature numérique : Pour vérifier l'authenticité du programme
  • Informations de version : Pour identifier le logiciel et sa version
  • Manifeste : Définit les permissions requises et la compatibilité
  • ASLR (Address Space Layout Randomization) : Empêche certaines attaques en chargeant le programme à des adresses aléatoires

 

13.7 Outils pour analyser les .exe

Si vous êtes curieux d'explorer la structure d'un fichier .exe :

  • PE Explorer : Permet de visualiser les en-têtes et les sections
  • Resource Hacker : Pour examiner et modifier les ressources
  • Dependency Walker : Pour voir les DLLs requises
  • Process Explorer (de Sysinternals) : Pour analyser les programmes en cours d'exécution
  • IDA Pro ou Ghidra : Outils avancés de désassemblage (utilisés par les professionnels)

 

13.8 Comment un .exe est créé

Un .exe est généralement créé par :

  • Compilation : Conversion du code source (C++, C#, etc.) en code machine
  • Édition de liens : Assemblage des différents modules et résolution des références
  • Création des ressources : Compilation des fichiers de ressources
  • Construction de l'en-tête PE : Organisation des sections selon le format PE
  • Signature : Optionnellement, le fichier peut être signé numériquement

Cette structure complexe explique pourquoi un fichier .exe ne peut pas être simplement ouvert et modifié comme un document texte - c'est un format binaire structuré qui nécessite des outils spécialisés pour être analysé et modifié.

 

 

14. Codage des Données dans les Ordinateurs

Comment un ordinateur encode et stocke différents types d'informations. Bien que les ordinateurs ne manipulent que des 0 et des 1, ils peuvent représenter des informations très diverses : nombres, textes, images, sons, vidéos, etc.

Ce chapitre explique les principes fondamentaux du codage des données, en commençant par les bases jusqu'aux méthodes plus avancées.

 

14.1 Les bases : bits et octets

Le bit : l'unité fondamentale

Un bit (binary digit) est la plus petite unité d'information dans un ordinateur, pouvant prendre uniquement deux valeurs : 0 ou 1. On peut le comparer à un interrupteur qui est soit éteint (0), soit allumé (1).

L'octet : groupe de 8 bits

Un octet (byte en anglais) est un groupe de 8 bits. Il peut représenter 2⁸ = 256 valeurs différentes (de 0 à 255).

Exemples d'octets :

  • 00000000 = 0 en décimal
  • 00000001 = 1 en décimal
  • 10000000 = 128 en décimal
  • 11111111 = 255 en décimal

Multiples de l'octet

  • 1 kilooctet (Ko) = 1 024 octets
  • 1 mégaoctet (Mo) = 1 024 Ko = 1 048 576 octets
  • 1 gigaoctet (Go) = 1 024 Mo = 1 073 741 824 octets
  • 1 téraoctet (To) = 1 024 Go = 1 099 511 627 776 octets

 

14.2 Codage des nombres entiers

Nombres entiers non signés (positifs)

Le codage le plus simple consiste à représenter directement un nombre en base 2 (binaire).

Par exemple, pour coder le nombre 42 sur un octet :

  • 42 en binaire = 00101010
  • Calcul : (0×2⁷) + (0×2⁶) + (1×2⁵) + (0×2⁴) + (1×2³) + (0×2²) + (1×2¹) + (0×2⁰)
  • Soit : 0 + 0 + 32 + 0 + 8 + 0 + 2 + 0 = 42

Avec n bits, on peut représenter des nombres de 0 à 2ⁿ-1. Ainsi :

  • Sur 8 bits : nombres de 0 à 255
  • Sur 16 bits : nombres de 0 à 65 535
  • Sur 32 bits : nombres de 0 à 4 294 967 295
  • Sur 64 bits : nombres de 0 à 18 446 744 073 709 551 615

Nombres entiers signés (positifs et négatifs)

Pour représenter des nombres positifs et négatifs, plusieurs méthodes existent :

Notation en complément à deux (la plus courante)

Cette méthode est la plus utilisée aujourd’hui :

  1. Pour les nombres positifs : Même représentation que les nombres non signés, avec le bit de poids fort (le plus à gauche) à 0.
  2. Pour les nombres négatifs :
    • On prend la représentation binaire du nombre positif correspondant
    • On inverse tous les bits (0 devient 1 et 1 devient 0)
    • On ajoute 1 au résultat

Exemple : codage de -42 sur 8 bits

  • +42 = 00101010
  • Inversion des bits = 11010101
  • Ajout de 1 = 11010110
  • Donc -42 = 11010110

Avec ce système sur n bits, on peut coder les nombres de -2^(n-1) à 2^(n-1)-1 :

  • Sur 8 bits : -128 à +127
  • Sur 16 bits : -32 768 à +32 767
  • Sur 32 bits : -2 147 483 648 à +2 147 483 647

L'avantage du complément à deux est que les circuits d'addition fonctionnent naturellement avec cette représentation, sans traitement spécial pour les nombres négatifs.

Notation signe-magnitude (moins courante)

Dans cette notation :

  • Le bit le plus à gauche indique le signe (0 pour positif, 1 pour négatif)
  • Les autres bits représentent la valeur absolue du nombre

Exemple :

  • +42 = 00101010
  • -42 = 10101010

Cette méthode est plus intuitive mais moins efficace pour les calculs.

Débordement (overflow)

Quand un calcul produit un résultat qui dépasse la capacité de stockage, on parle de débordement arithmétique. Par exemple, si on ajoute 1 à 255 sur 8 bits non signés, on obtient 0 avec un débordement.

 

 

14.3 Codage des nombres à virgule flottante

Les nombres décimaux (avec partie fractionnaire) sont généralement codés selon la norme IEEE 754, qui utilise une représentation en "virgule flottante".

Structure d'un nombre flottant

Un nombre flottant sur 32 bits (simple précision) contient :

  • 1 bit de signe (0 pour positif, 1 pour négatif)
  • 8 bits d'exposant (puissance de 2)
  • 23 bits de mantisse (partie significative)

La valeur est calculée par : (-1)^signe × 1,mantisse × 2^(exposant-127)

Exemple : codage de 42.5 en flottant simple précision

  • 5 en binaire = 101010.1
  • Normalisation : 1.010101 × 2^5
  • Signe = 0 (positif)
  • Exposant = 5 + 127 (biais) = 132 = 10000100
  • Mantisse = 010101000000000000000000 (les bits après la virgule)
  • Résultat = 0 10000100 01010100000000000000000

Précision et valeurs spéciales

Cette représentation permet de coder une large gamme de valeurs (très petites à très grandes), mais avec une précision limitée. Certaines combinaisons sont réservées pour des valeurs spéciales :

  • Zéro
  • Infini
  • NaN (Not a Number)

 

14.4 Codage du texte

ASCII (American Standard Code for Information Interchange)

Le code ASCII est l'un des premiers standards pour représenter les caractères :

  • Utilise 7 bits par caractère (128 valeurs possibles)
  • Couvre les caractères latins non accentués, chiffres et symboles courants

Exemples :

  • 'A' = 65 = 1000001
  • 'a' = 97 = 1100001
  • '0' = 48 = 0110000
  • Espace = 32 = 0100000

ASCII étendu et ISO-8859

Ces extensions de l'ASCII utilisent 8 bits (1 octet) pour représenter 256 caractères, ajoutant des caractères accentués, symboles supplémentaires, etc.

L'ISO-8859 comprend plusieurs variantes selon les langues :

  • ISO-8859-1 (Europe occidentale)
  • ISO-8859-5 (cyrillique)

Unicode et ses encodages

Pour représenter tous les caractères de toutes les langues du monde, Unicode a été créé. Il peut représenter plus d'un million de caractères différents.

UTF-8

C'est l'encodage le plus répandu sur le web :

  • Les caractères ASCII sont codés sur 1 octet (compatibilité)
  • Les autres caractères utilisent 2 à 4 octets
  • Economique en espace pour les textes occidentaux

Exemple :

  • 'A' = 1 octet = 01000001
  • 'é' = 2 octets = 11000011 10101001
  • '中' = 3 octets = 11100100 10111000 10101101

UTF-16 et UTF-32

D'autres encodages Unicode existent :

  • UTF-16 : caractères sur 2 ou 4 octets
  • UTF-32 : tous les caractères sur 4 octets (simple mais volumineux)

14.5 Comment l'ordinateur traite le texte

Quand on tape du texte, l'ordinateur :

  • Reçoit les codes des touches du clavier
  • Les convertit en codes de caractères (Unicode)
  • Les stocke en mémoire selon l'encodage choisi
  • Les affiche à l'écran en utilisant les polices de caractères

14.6 Codage des images

Images bitmap (matricielles)

Les images bitmap sont composées de pixels (points) organisés en grille :

Images noir et blanc (1 bit par pixel)

  • 0 = pixel noir
  • 1 = pixel blanc

Images en niveaux de gris (8 bits par pixel)

  • Valeurs de 0 (noir) à 255 (blanc)
  • 256 nuances de gris possibles

Images en couleur RGB (24 bits par pixel)

  • 8 bits pour le Rouge (0-255)
  • 8 bits pour le Vert (0-255)
  • 8 bits pour le Bleu (0-255)
  • Permet 16,7 millions de couleurs différentes

Exemple : Rouge vif = (255, 0, 0) = 11111111 00000000 00000000

Avec transparence (32 bits par pixel)

  • 8 bits supplémentaires pour le canal Alpha (transparence)

Formats de compression

Pour réduire la taille des fichiers, différentes techniques de compression sont utilisées :

Compression sans perte (lossless)

  • PNG : Utilise des algorithmes qui préservent toutes les informations
  • GIF : Limité à 256 couleurs

Compression avec perte (lossy)

  • JPEG : Élimine les détails peu perceptibles par l'œil humain
  • Plus le taux de compression est élevé, plus la qualité diminue

Images vectorielles

Contrairement aux images bitmap, les images vectorielles sont définies par des formules mathématiques (points, lignes, courbes). Elles peuvent être redimensionnées sans perte de qualité (formats SVG, AI, etc.).

 

 

14.7 Codage du son

Principe de l'échantillonnage

Le son est une onde continue qui doit être convertie en valeurs numériques :

  • On mesure l'amplitude de l'onde sonore à intervalles réguliers (échantillons)
  • Chaque mesure est convertie en valeur numérique

Paramètres clés

Fréquence d'échantillonnage

  • Nombre d'échantillons par seconde
  • CD audio : 44 100 Hz (44,1 kHz)
  • Plus la fréquence est élevée, plus la qualité est bonne

Résolution (profondeur de bits)

  • Nombre de bits par échantillon
  • CD audio : 16 bits (65 536 niveaux possibles)
  • Audio professionnel : 24 bits ou 32 bits

Nombre de canaux

  • Mono : 1 canal
  • Stéréo : 2 canaux (gauche et droite)
  • Surround : 5.1, 7.1, etc.

Calcul de la taille d'un fichier audio non compressé

Taille = (Fréquence × Résolution × Canaux × Durée) ÷ 8

Exemple : Un fichier audio stéréo de 3 minutes en qualité CD :

  • 44 100 Hz × 16 bits × 2 canaux × 180 secondes ÷ 8 = 31 752 000 octets ≈ 30,3 Mo

Formats de compression audio

Compression sans perte

  • FLAC, ALAC : Réduisent la taille tout en préservant l'intégralité des données

Compression avec perte

  • MP3, AAC : Éliminent les fréquences peu perceptibles par l'oreille humaine
  • Réduisent considérablement la taille avec une perte de qualité variable

Codage de la vidéo : Une vidéo est une séquence d'images (frames) affichées rapidement (24-60 images par seconde), accompagnée d'une piste audio.

Compression vidéo : La compression est essentielle pour les vidéos, car les données brutes seraient énormes :

Compression spatiale : Similaire à la compression d'image (JPEG), réduit les redondances dans chaque image

Compression temporelle : Stocke uniquement les différences entre images successives. Types d'images dans un flux vidéo compressé :

  • Images I (Intra) : complètes, indépendantes
  • Images P (Prédictives) : contiennent les différences avec l'image précédente
  • Images B (Bidirectionnelles) : dépendent des images avant et après

Codecs et conteneurs

  • Codec : algorithme de compression/décompression (H.264, H.265/HEVC, VP9)
  • Conteneur : format de fichier qui encapsule vidéo, audio et métadonnées (MP4, MKV, AVI)

 

15 Structures de données complexes

15.1 Tableaux

Un tableau est une séquence d'éléments du même type, stockés de façon contiguë en mémoire :

  • L'accès à un élément se fait par son indice
  • Chaque élément occupe le même espace mémoire

 

15.2 Chaînes de caractères

Une chaîne est généralement stockée comme :

  • Un tableau de caractères codés (ASCII, UTF-8, etc.)
  • Éventuellement avec un caractère spécial de fin (NULL, 0x00)
  • Ou avec une information sur la longueur

 

15.3 Structures et objets

Une structure regroupe plusieurs données de types différents :

Structure Personne {

  Chaîne nom [50]

  Entier age

  Flottant taille

}

En mémoire, ces champs sont stockés les uns à la suite des autres.

 

 

15.4 Listes chaînées, arbres, graphes

Ces structures plus complexes utilisent des pointeurs (adresses mémoire) pour relier des éléments entre eux.

 

16. Codage des données pour la transmission

16.1 Sérialisation

Processus de conversion d'une structure de données complexe en séquence d'octets pour :

  • Le stockage (fichiers)
  • La transmission (réseau)

 

16.2 Formats d'échange de données

Formats textuels :

  • JSON : Format léger, lisible par l'humain
  • XML : Plus verbeux mais très structuré
  • CSV : Simple pour les données tabulaires

Formats binaires

  • Protocol Buffers, MessagePack, BSON
  • Plus compacts et plus rapides à traiter que les formats texte

 

16.3 Protection contre les erreurs

Pour garantir l'intégrité des données :

 Sommes de contrôle (checksums) :  Détectent les erreurs de transmission ou de stockage

Codes correcteurs d'erreurs : Permettent non seulement de détecter mais aussi de corriger certaines erreurs

 

 

17. Cryptographie et sécurité des données

Hachage cryptographique : Transforme des données de taille quelconque en une empreinte de taille fixe :

  • SHA-256, SHA-3, Blake2
  • Utilisé pour vérifier l'intégrité des données et stocker les mots de passe

Chiffrement symétrique : Utilise la même clé pour chiffrer et déchiffrer :

  • AES, ChaCha20
  • Rapide mais nécessite un échange sécurisé de clés

Chiffrement asymétrique : Utilise une paire de clés (publique/privée) :

  • RSA, ECC, Ed25519
  • Plus lent mais résout le problème de l'échange de clés

Signatures numériques : Permettent de vérifier l'authenticité et l'intégrité d'un message ou d'un fichier

Le codage des données est au cœur de l'informatique. De la simple représentation des nombres jusqu'aux formats complexes de médias ou aux techniques cryptographiques, tout repose sur la manipulation intelligente de séquences de bits. Les applications les plus sophistiquées, l'intelligence artificielle la plus avancée ou les jeux vidéo les plus immersifs reposent tous, à la base, sur ces méthodes de codage des données.

Glossaire

  • Bit : Unité d'information la plus élémentaire (0 ou 1)
  • Octet : Groupe de 8 bits
  • Codec : Compression/décompression (COder/DECoder)
  • Encodage : Représentation d'une information selon un format spécifique
  • Pixel : Plus petit élément d'une image numérique
  • Échantillon : Mesure ponctuelle d'un signal analogique
  • Hachage : Fonction qui transforme des données en empreinte numérique
  • Sérialisation : Conversion d'une structure de données en séquence d'octets

 

18. Applications pratiques du codage des données

18.1 Stockage et transmission efficace des fichiers

Compression de données

  • Photos sur smartphones : Lorsque vous prenez une photo avec votre téléphone, elle est automatiquement compressée en format JPEG. Un appareil photo de 12 mégapixels produit théoriquement des fichiers de 36 Mo (12 millions de pixels × 3 octets pour RGB), mais grâce à la compression JPEG, ces photos n'occupent généralement que 2-4 Mo.
  • Services de streaming vidéo : Netflix, YouTube et autres services utilisent des codecs avancés comme H.265/HEVC qui réduisent considérablement la taille des vidéos. Sans cette compression, un film HD de 2 heures nécessiterait environ 278 Go au lieu de 3-8 Go typiquement.
  • Archivage de documents : Les formats PDF compressés permettent de stocker des centaines de pages de documents dans quelques mégaoctets, facilitant leur partage par email ou leur stockage.

 

18.2 Traitement des textes multilingues

  • Sites web internationaux : Grâce à l'encodage UTF-8, un même site web peut afficher simultanément du texte en français, arabe, chinois et russe sans problème de compatibilité.
  • Recherche et tri : Les moteurs de recherche utilisent des algorithmes spécifiques pour indexer et trier correctement les textes selon leurs règles linguistiques, en tenant compte des différents encodages.
  • Traduction automatique : Les systèmes comme Google Translate s'appuient sur l'encodage normalisé du texte pour traiter des milliards de mots dans différentes langues.

 

18.3 Sécurité numérique quotidienne

  • Mots de passe sécurisés : Quand vous créez un compte sur un site web, votre mot de passe n'est pas stocké tel quel mais transformé par une fonction de hachage (comme SHA-256). Lorsque vous vous connectez, c'est l'empreinte de votre mot de passe qui est comparée et non le mot de passe lui-même.
  • Paiements en ligne : Lorsque vous effectuez un achat sur internet, vos informations bancaires sont chiffrées grâce au protocole HTTPS (utilisant TLS), qui emploie une combinaison de chiffrement symétrique et asymétrique.
  • Signatures électroniques : La signature d'un document PDF utilise des techniques cryptographiques basées sur le codage asymétrique pour garantir son authenticité.

 

18.4 Usages médicaux et scientifiques

  • Imagerie médicale : Les scanners IRM et CT produisent des images en niveaux de gris codées sur 12 ou 16 bits (4096 ou 65536 niveaux) pour capturer les subtiles différences de densité des tissus.
  • Séquençage génétique : L'ADN est représenté numériquement comme des séquences de quatre lettres (A, C, G, T), chacune pouvant être codée sur 2 bits, permettant de stocker le génome humain complet dans environ 750 Mo.
  • Traitement de signaux biologiques : Les électrocardiogrammes (ECG) sont numérisés à des fréquences d'échantillonnage spécifiques pour capturer avec précision l'activité électrique du cœur.

 

18.5. Communication moderne

  • Messagerie instantanée : Les applications comme WhatsApp ou Signal utilisent le chiffrement de bout en bout, où seuls l'expéditeur et le destinataire peuvent lire les messages grâce à des paires de clés uniques.
  • Emoji et caractères spéciaux : L'Unicode a introduit des milliers d'emoji, désormais partie intégrante de notre communication quotidienne. Chaque emoji est en réalité un code spécifique (comme U+1F600 ).
  • QR codes : Ces codes-barres 2D encodent du texte ou des URLs suivant un schéma binaire visuel facilement scannable par les smartphones.

 

18.6. Multimédia et divertissement

  • Streaming audio adaptatif : Les services comme Spotify ajustent dynamiquement la qualité audio (bitrate) selon votre connexion internet, basculant entre différents niveaux de compression.
  • Photographie HDR : Cette technique combine plusieurs images avec différentes expositions, nécessitant un traitement numérique sophistiqué des valeurs de pixels pour créer une image à gamme dynamique étendue.
  • Réalité virtuelle : Les casques VR traitent des images stéréoscopiques hautement optimisées pour maintenir une fréquence d'affichage élevée (90 Hz ou plus) tout en préservant la qualité visuelle.

 

18.7 Applications pratiques au quotidien

  • Correction d'erreurs dans les communications : Quand vous passez un appel téléphonique dans une zone à faible signal, des algorithmes de correction d'erreurs permettent de reconstruire les parties manquantes de la conversation.
  • Codes-barres EAN/UPC : Les codes-barres sur les produits utilisent un codage spécifique où les différentes largeurs des barres noires et des espaces représentent des chiffres.
  • Reconnaissance faciale : Les smartphones transforment votre visage en une série de mesures codées numériquement (distances entre les yeux, forme du nez, etc.) pour vous authentifier.

 

18.8 Optimisation des ressources informatiques

  • Virtualisation : Les centres de données utilisent des techniques avancées de codage pour représenter efficacement plusieurs machines virtuelles sur un même serveur physique.
  • Bases de données optimisées : Les systèmes comme MongoDB ou PostgreSQL utilisent des formats de stockage binaires spécialisés pour accélérer les requêtes et minimiser l'espace disque.
  • Mémoire cache : Les navigateurs web stockent temporairement images et données dans un format optimisé pour accélérer le chargement des sites fréquemment visités.

 

18.9 Nouveaux horizons technologiques

  • Informatique quantique : Au lieu des bits classiques (0 ou 1), elle utilise des qubits qui peuvent exister dans plusieurs états simultanément, nécessitant des systèmes de codage entièrement nouveaux.
  • Apprentissage automatique : Les réseaux de neurones représentent les connaissances sous forme de matrices de poids numériques, codant implicitement des modèles complexes du monde réel.
  • Internet des objets (IoT) : Les protocoles comme MQTT utilisent des formats de messages ultra-compacts pour permettre à des appareils à faible puissance de communiquer efficacement.

 

18.10 Applications personnelles

  • Restauration de photos anciennes : Les algorithmes modernes peuvent analyser le codage des pixels d'une photo endommagée pour restaurer les parties manquantes ou dégradées.
  • Conversion de formats : Quand vous convertissez un document Word en PDF, vous transformez son codage interne en un format de document portable standardisé.
  • Sauvegarde incrémentielle : Les logiciels de backup identifient uniquement les parties modifiées des fichiers grâce à des sommes de contrôle, économisant espace et temps.

 

We use cookies
Ce site utilise des cookies. Certains sont essentiels au fonctionnement et d’autres peuvent être placés par des services externes (captchas) intégrés. Vous pouvez décider d'autoriser ou non les cookies. Si vous les rejetez certaines fonctionnalités seront désactivées comme par exemple les vidéos YouTube et des problèmes d'authentification pourront alors survenir.