Dans tous les formats de compression, nous allons manipuler des bits et des octets. Qu’est-ce que c’est que ce truc ?
- Le codage de l'information analogique : comment faisait-on dans le temps ?
- Le codage numérique de l'information : l'avènement de l'infomatique
- Le numérique et la compression
- À retenir
Le codage de l'information analogique : comment faisait-on dans le temps ?
Au cours du XXe siècle, vos grands-parents découvrent les disques vinyles et les télévisions à tube cathodique.
Ces deux technologies d’antan ont plusieurs aspects en commun : elles transmettent, respectivement, les ondes sonores et les couleurs, comme des grandeurs physiques. C’est-à-dire :
-
Quand vous jouez un vinyle, le lecteur lit de minuscule gravures et les transforme en ondes électriques, qui sont elles-mêmes transformées en signal sonore. La forme du signal sonore est directement déterminée par la profondeur de la gravure.
-
Quand vous regardez la télévision analogique, vous recevez des ondes radio à une fréquence donnée. Chaque onde dispose de son intensité et de sa fréquence. Ces grandeurs, qui varient constamment afin d’envoyer en temps réel les lignes de la prochaine image à votre téléviseur, correspondent directement à des couleurs.

Tout ça c’est bien beau, mais les vinyles prennent beaucoup de place et n’admettent pas beaucoup de musique. Et la télévision analogique n’avait pas beaucoup de chaînes, mais demandait beaucoup d’ondes radio (des fréquences qu’on a aujourd’hui pu libérer pour vous permettre d’avoir de l’Internet sur vos téléphones portables, par exemple). Comment améliorer tout ça ?
Le codage numérique de l'information : l'avènement de l'infomatique
Plus tard, les premiers ordinateurs sont apparus. C’est une petite révolution : à ce moment là, on décide de ne plus coder les informations sur des grandeurs complexes (comme celle d’une couleur donnée ou d’un forme de signal sonore donnée), mais sur un nombre limité de grandeurs possibles : en général deux, 0 ou 1 (quelque chose ou rien). Pourquoi ?
En fait, cela a deux très gros avantages. Voici le premier :
-
En codant plein d’informations avec « que des 0 et des 1 », vous pouvez avoir un seul support de stockage (un disque dur, un CD-ROM) et mettre toutes les informations que vous voulez stockées côte à côte. Quand je dis toutes, ça peut être à la fois :
-
Un programme, c’est à dire une suite d’instructions pour mon ordinateur : je peux décider que quand mon ordinateur voit un fichier « PROGRAMME.BAT » sur mon disque dur, il lira par exemple, 000100010, eh bien « 0001 » pourra vouloir dire « lire » et « 000 » ma chanson préférée, puis « 10 » revenir au début quand j’ai fini.
-
Une image, par exemple constituée de pixels de couleurs. Je peux décider que quand mon ordinateur voit un fichier « CHATON.IMG », il lira par exemple, 000100110110, où 0001 voudra lire pixel bleu, 0011 voudra dire pixel rouge, 0110 pixel vert. Et si on ajoute beaucoup d’autres pixels, met tous les pixels côte-à-côte selon le principe de lignes et de colonnes, eh bien ça fera un chaton.
-
Une chanson, par exemple constituée d’impulsions sonores. On ne le sait pas toujours quand on est un humain, mais un son est constitué d’ondes (d’impulsions de tailles variables) : des ondes très serrées feront un son aigu quand des ondes très larges feront un son grave. Je peux décider que quand mon ordinateur voit un fichier « CHANSON.PCM », et qu’il lit des « 001 000 001 000 », il commencera à jouer (très très vite) dans mon haut-parleur un début de son aigu tout doucement, puis « 011 000 011 000 », une suite de son aigu plus fort, et ensuite « 001 000 000 001 », un début de son grave tout doucement, etc.
-
L’avantage d’utiliser des 0 et des 1 ici ? Vous l’aurez compris, vous n’avez pas besoin d’utiliser une grosse cassette pour la vidéo, un vinyle pour la chanson et une carte perforée (cherchez à quoi ça ressemble sur Google Images si vous êtes trop jeune ) pour le programme. Tout est côte à côte et le programme peut même décider d’écrire, d’enregistrer ou de copier la programme ou le chanson ! C’est pour ça que l’informatique est très puissante.

Le numérique et la compression
Mais il y a un deuxième gros avantage. Admettons que, par exemple, dans mon image il y ait un fond blanc. Ça me fait plein de pixels blancs côte à côte ! Et il n’y a pas beaucoup de place sur mon disque dur.
Comment faire comprendre à mon ordinateur, plutôt que de lui envoyer deux-cent cinquante sept pixels blancs, que je veux 257 fois un pixel blanc ? Pas de panique ! Je peux simplement décider que « 100000001 » veut dire 257, puis que « 111111111 » veut dire pixel blanc. Je peux lui envoyer d’abord l’instruction pour 257, puis ensuite l’instruction pour pixel blanc.
Vous avez compris ça, bravo ! Vous avez découvert une des formes les plus simples de compression. On l’appelle « Run-length encoding (ou RLE) » : en anglais « codage suite-taille » : un nombre de répétitions puis une information à répéter.
Comment est-ce que je peux mettre le nombre de répétitions et l’information côte à côte ? Parce que tout est des 0 et des 1, pardi ! C’est la magie de l’informatique.
Mais je peux faire encore mieux. J’ai remarqué que, à cause de ma façon de compter en binaire (avec des 0 et des 1 plutôt que des chiffres décimaux comme 8788777), une coïncidence fait que blanc s’écrit « 111111111 » et 257 « 100000001 » (c’est un vrai exemple). Ça me fait toujours plein de « 0 » et de « 1 » côte à côte !
Alors que si j’avais un programme intelligent, je pourrais simplement trouver une manière de lui dire « 7 fois 1 », et « 1, puis 7 fois 0, puis 1 ». Toujours avec seulement des 0 et des 1. Vous suivez ?
Et si mon programme est très intelligent, il pourrait même détecter ces 0 et des 1 tout seul et les rassembler, intelligent comme il est ! Ça me ferait des fichiers plus petits.
Tout ça, c’est possible parce que le codage binaire employé en informatique s’applique très bien à toutes sortes de formules mathématiques. Ce sont encore d’autres formes de compression que vous allez découvrir dans ce tutoriel !
À retenir
Coder avec seulement des 0 et des 1, c’est le codage numérique. Coder avec des grandeurs physiques, c’est le codage analogique. Le codage numérique permet plus facilement la compression. Très pratique !
Sachez-le aussi : un 0 ou un 1 s’appelle un bit. Un groupe de huit 0 ou 1 forme un octet (pourquoi huit ? c’est une vieille convention, mais elle est utilisée partout). Le mot anglais « byte » est équivalent à « octet » (ne le confondez pas avec « bit » !).