XMAKYNA Blog

EngineeringFoundations

Comment les ordinateurs transforment les 0 et les 1 en mots et en images

Language: French
Dark schematic of an integrated circuit representing binary information and the path from zeros and ones to meaningful output.

Saisissez un X majuscule dans un document vide. Il apparaît aussitôt à l’écran. Vous reconnaissez une lettre, peut-être le début d’un mot. Pourtant, le clavier n’a pas envoyé un minuscule dessin du X à travers l’ordinateur. Entre votre doigt et l’écran, une activité électrique a été transformée en information, cette information a été interprétée, puis l’ordinateur a reçu des instructions pour dessiner quelque chose que vous reconnaissez.

Dans notre précédent article, « Comment fonctionnent les ordinateurs : l’employé de classement ultrarapide de Feynman », nous avons repris le modèle imaginé par Richard Feynman : un employé suit des instructions et lit des valeurs dans des tiroirs numérotés. Ce modèle expliquait comment un ordinateur peut accomplir des tâches complexes en enchaînant des opérations simples. Regardons maintenant de plus près ce que contiennent ces tiroirs et comment la machine électronique se sert de leur contenu. Tout commence avec deux symboles : 0 et 1.

Un interrupteur peut mémoriser un bit

Imaginez un interrupteur. Pour notre exemple, il possède deux positions : éteint et allumé. Nous pourrions les désigner autrement, mais 0 et 1 sont pratiques. Un choix entre deux possibilités correspond à un bit, contraction de binary digit, ou chiffre binaire. À lui seul, un bit permet de distinguer deux états. Il ne peut pas donner le nom d’une personne ni décrire une photographie.

À l’intérieur d’un ordinateur, de minuscules composants électroniques jouent le rôle d’interrupteurs. En combinant un grand nombre de ces éléments à deux états, l’ordinateur peut représenter bien davantage que « allumé » ou « éteint ».

Quatre bits suffisent pour compter

Imaginez quatre interrupteurs alignés. Attribuez-leur les valeurs 8, 4, 2 et 1, de gauche à droite. Quand un interrupteur est allumé, sa valeur compte ; quand il est éteint, il ne contribue pas au total. Placez-les sur 0 1 0 1 : éteint, allumé, éteint, allumé. Le deuxième vaut 4 et le quatrième vaut 1. Leur somme donne 4 + 1 = 5.

Explorez les bitsTouchez un chiffre pour le faire passer de 0 à 1 ou inversement.
Résultat décimal5
4 + 1 = 5
Essayez d’activer tous les bits.
Figure 1. Quatre positions binaires, de valeurs 8, 4, 2 et 1, permettent de représenter les nombres de 0 à 15. Le motif initial 0101 représente 5.

Essayez une autre combinaison. Le motif 0111 représente 7, et 1111 représente 15. C’est le système binaire : une façon d’écrire les nombres avec uniquement des 0 et des 1. Le principe ressemble à celui du système décimal habituel, sauf que la valeur de chaque position double en allant vers la gauche, au lieu d’être multipliée par dix.

Chaque bit peut prendre deux états, 0 ou 1. Quatre bits offrent donc 2 × 2 × 2 × 2 = 16 motifs possibles. Huit bits, habituellement regroupés en un octet, en offrent 256. En ajoutant des bits, nous pouvons représenter de plus grands nombres sans demander aux composants électroniques de distinguer d’autres états. Compter n’est que la première chose utile que nous puissions faire avec ces motifs.

Un nombre peut représenter une lettre

Revenons au X affiché à l’écran. Pour mémoriser une lettre, il faut une règle qui associe un nombre à cette lettre. L’ancienne norme de texte ASCII fournit un exemple simple : elle attribue le nombre 88 au X majuscule.

En binaire, 88 peut s’écrire 01011000. Le zéro initial sert seulement à compléter le code ASCII de sept bits pour l’afficher sur huit positions. Les 1 occupent les positions qui valent 64, 16 et 8 ; leur somme fait 88. Si un programme lit ces bits comme un nombre, il obtient quatre-vingt-huit. S’il les interprète selon ASCII, ils désignent le caractère X.

Un motif. Deux significations.Touchez un bit ou essayez une autre lettre.
Comme un nombre88Décimal
Selon ASCIIXInterprétation en caractère

Les mêmes bits, interprétés selon ASCII.

Figure 2. Le motif 01011000 représente le nombre 88 lorsqu’il est lu comme un nombre binaire ordinaire, et le caractère X lorsqu’il est interprété selon ASCII.

Rien dans ce motif ne ressemble à la forme d’un X. Le lien entre les deux vient de la convention adoptée pour le lire.

Les ordinateurs modernes doivent représenter beaucoup plus de caractères qu’ASCII ne peut en couvrir, notamment les systèmes d’écriture du monde entier et les symboles tels que les émojis. Ils utilisent donc des normes plus étendues, en particulier Unicode, ainsi que différentes façons de coder les caractères en octets. Les détails changent, mais le principe reste le même : les valeurs mémorisées prennent leur sens grâce à des conventions. Un mot est une suite de caractères représentés de cette façon : un programme peut enregistrer puis lire, dans l’ordre, les codes de B, O et X, sans matériel conçu spécialement pour le mot BOX.

Le même principe s’applique aux couleurs. Une manière courante de décrire un pixel à l’écran consiste à utiliser trois nombres indiquant les quantités de lumière rouge, verte et bleue. Dans un exemple classique à huit bits par canal, (255, 0, 0) désigne le rouge : la composante rouge est au maximum, tandis que le vert et le bleu valent zéro. Avec une autre convention, les mêmes nombres seraient interprétés différemment. Textes et images peuvent donc être mémorisés grâce aux mêmes mécanismes électroniques de base, sans constituer pour autant le même type d’information.

Nous comprenons maintenant ce que l’employé de classement pourrait trouver dans un tiroir : une valeur dont le sens dépend de la façon dont la tâche en cours demande de l’interpréter. Mais mémoriser une valeur ne suffit pas à agir sur elle. Pour cela, l’ordinateur a besoin d’instructions.

Comment les circuits accomplissent le travail

La mémoire conserve les informations nécessaires au programme en cours d’exécution, à la manière des tiroirs de Feynman. Le processeur central, ou CPU, exécute des instructions, effectue des calculs, compare des valeurs et aide à déterminer ce qui se passe ensuite. Dans les ordinateurs modernes, ces tâches sont réparties entre de nombreux circuits électroniques, mais l’idée de récupérer une valeur, d’effectuer une opération puis d’enregistrer le résultat reste utile.

Un ordinateur peut additionner des nombres en binaire. Par exemple, 0101 représente 5 et 0001 représente 1. Leur somme est 0110, soit 6.

Additionnez les bitsModifiez les deux nombres binaires et observez la somme.
Premier nombre
5décimal
+
Deuxième nombre
1décimal
Somme binaire
6décimal
5 + 1 = 6 en décimal
Propagation de retenueUne retenue passe à la position 2s.
Essayez 7 + 1, ou 15 + 1 pour obtenir un cinquième bit.
Figure 3. Modifiez l’une ou l’autre des deux entrées de quatre bits, additionnez les valeurs binaires et lisez le résultat. La somme est toujours affichée sur cinq positions alignées, afin de disposer de la position supplémentaire si elle devient nécessaire.

Les instructions elles-mêmes sont également représentées par des 0 et des 1. Certains bits indiquent au processeur l’opération à effectuer ; d’autres précisent quelles valeurs utiliser ou où les trouver, par exemple dans un registre (une petite zone de stockage à l’intérieur du processeur). Nous donnons à ces opérations des noms courts : MOVE copie une valeur, ADD additionne des nombres, COMPARE compare des valeurs et JUMP fait passer le processeur à une autre instruction. CALL lance un ensemble distinct d’instructions et RETURN ramène ensuite le processeur au point de départ de cet appel. En suivant ces instructions, parfois en répétant des étapes ou en changeant de chemin, le processeur exécute un programme.

C’est là que logiciel et matériel se rejoignent : les instructions donnent aux circuits électroniques le travail à accomplir.

Repensez à l’employé de classement de Feynman. Il suit les instructions pour trouver le bon tiroir numéroté, travailler sur son contenu et parfois passer à une autre étape plutôt que poursuivre avec la suivante. Le processeur suit la même idée générale et exécute un programme au moyen d’une suite d’opérations simples.

Cet exemple laisse de côté de nombreux détails d’ingénierie, notamment l’organisation de l’espace de travail interne des processeurs et la coordination de leurs multiples opérations. Nous n’avons pas besoin de ces détails pour comprendre la relation essentielle. L’ordinateur mémorise des représentations, suit des instructions qui définissent ce qu’il doit en faire et enregistre de nouvelles représentations comme résultats.

Comment le X apparaît à l’écran

Nous pouvons maintenant suivre la lettre depuis le début. Lorsque vous appuyez sur une touche, le matériel du clavier signale une entrée à l’appareil. Le système d’exploitation et l’application l’interprètent notamment à partir de la disposition du clavier et des touches de modification. Ils déterminent quel caractère vous vouliez saisir et peuvent en mémoriser une représentation dans le document.

Au moment d’afficher le texte, l’application a besoin de davantage que du code numérique du caractère. Elle doit aussi savoir à quoi la lettre doit ressembler. C’est notamment le rôle d’une police de caractères. Le logiciel de rendu du texte utilise la police choisie pour déterminer la forme et la position du caractère, puis quels pixels doivent afficher quelles couleurs. L’écran émet alors la lumière qui forme le X que vous voyez.

Changez de police et le X pourra avoir une apparence très différente. Le caractère n’a pas changé ; ce sont les informations et les instructions utilisées pour le dessiner qui ont changé. De même, le nombre 88 ne s’affichera pas sous forme de X simplement parce que ces bits ont été stockés quelque part. Un programme doit choisir de les interpréter comme du texte et organiser son affichage.

On peut ainsi distinguer plusieurs rôles faciles à confondre. Les états électriques permettent à l’ordinateur de stocker et de manipuler des motifs de façon fiable. Un codage indique au programme ce qu’un motif représente. Les instructions déterminent comment l’utiliser. Enfin, l’écran rend le résultat visible. La lettre affichée dans le document est le produit de toute cette chaîne.

Les images et le son suivent le même principe

Pour une photographie, tout commence par la lumière plutôt que par une pression sur une touche. Le capteur de l’appareil photo mesure la lumière reçue par de nombreuses petites zones, puis l’appareil transforme ces mesures en valeurs numériques. Une partie plus sombre de la scène peut, par exemple, être enregistrée avec un nombre plus faible, et une partie plus lumineuse avec un nombre plus élevé. Un logiciel de traitement d’image utilise ces valeurs pour construire une image. Le fichier peut aussi comprimer l’information afin d’occuper moins d’espace ; lors de l’affichage, le logiciel interprète le format du fichier et fournit à l’écran les données nécessaires pour les pixels.

0 Noir128 Gris255 Blanc
Exemple de niveaux de gris. Dans une image conventionnelle en niveaux de gris sur huit bits, 0 représente le noir, 128 le gris et 255 le blanc, avec d’autres nuances entre les deux.

Le son offre un autre exemple. Un microphone réagit aux variations de pression de l’air, et des circuits électroniques transforment les mesures de ce signal changeant en échantillons numériques. Dans une méthode courante d’enregistrement, les valeurs proches de zéro représentent de petites variations de pression, tandis que des valeurs plus éloignées de zéro, positives ou négatives, représentent des variations plus importantes. Les sons plus faibles produisent généralement des oscillations plus petites ; les sons plus forts, des oscillations plus grandes. Un logiciel peut stocker, modifier ou transmettre ces échantillons. À l’autre extrémité, un haut-parleur convertit des signaux électriques en nouvelles vibrations de l’air. Les ondes sonores d’origine n’ont pas été pliées puis rangées dans la mémoire. Ce sont les informations qui les décrivent qui ont été représentées, traitées, puis utilisées pour produire à nouveau du son.

Comment le son devient des nombres

Mesures de la pression de l’air au fil du temps

Exemple d’ondes sonores. Chaque point représente une mesure. Des oscillations plus amples de part et d’autre de zéro correspondent à de plus grandes variations de pression de l’air.

Ces exemples font intervenir des mesures, des conventions et des équipements différents. Pourtant, tous reposent sur la même capacité fondamentale : la machine peut représenter l’information au moyen de motifs, agir sur ces motifs selon des instructions et utiliser des dispositifs physiques pour produire un résultat. Cela suffit à relier les circuits à deux états d’une puce aux textes, aux photographies et à la musique de notre quotidien.

Quand les choses se passent mal

Les exemples que nous avons étudiés sont volontairement simples. Les applications réelles doivent interpréter des fichiers complexes, gérer des informations inattendues et prendre de nombreuses décisions. Pour afficher une photographie, par exemple, une application doit comprendre le contenu du fichier avant de pouvoir le convertir en image. Une erreur peut produire un résultat incorrect ou provoquer un plantage. Il arrive qu’un programme tente d’accéder à une zone de mémoire qu’il n’est pas autorisé à utiliser ; le matériel et le système d’exploitation peuvent alors détecter et bloquer cet accès. Mais toutes les erreurs ne déclenchent pas cette protection. Une application peut mal utiliser une zone de mémoire à laquelle elle a pourtant accès, ou simplement prendre une mauvaise décision, et continuer à fonctionner sans avertissement évident.

Certaines erreurs peuvent être plus graves qu’un plantage. Une application peut produire des résultats erronés, perdre des informations ou omettre une vérification qui aurait dû empêcher une action. Repensez à l’employé de classement de Feynman : il peut suivre une instruction à la lettre, mais si cette instruction désigne le mauvais tiroir, le résultat peut quand même être faux. Un processeur suit les instructions sans savoir si elles accomplissent ce que le programmeur voulait. Lorsqu’une application traite mal des informations venant de l’extérieur, ces erreurs peuvent parfois influer sur ses décisions ou ses actions de façon imprévue, et créer éventuellement des problèmes de sécurité.

Dans de prochains articles, nous examinerons l’origine de ces défaillances et la façon dont les ingénieurs cherchent à les prévenir ou à en limiter les conséquences.

En bref

Un bit enregistre l’une de deux possibilités : 0 ou 1. Avec plusieurs bits, un ordinateur peut représenter des nombres. Grâce à des règles convenues pour les interpréter, ces nombres peuvent désigner des caractères, des couleurs ou des mesures sonores. Un processeur suit des instructions pour traiter les informations mémorisées, tandis que les dispositifs d’entrée et de sortie relient le système électronique au monde qui nous entoure.

Repensez au X qui apparaît dans votre document. Son identité vient d’un code de caractère ; son apparence, d’une police et du logiciel qui le dessine ; la lumière qui le rend visible vient de l’écran. Toutes ces étapes reposent sur la capacité de représenter et de manipuler l’information de manière fiable. Comprendre cette chaîne est bien plus utile que d’imaginer qu’un ordinateur contient de minuscules mots et images.