Ce qui remplit ton forfait mobile
Ton forfait mobile se compte en gigaoctets. Un message texte ne pèse presque rien. Une photo pèse quelques millions d'octets.
Une minute de musique non compressée pèse environ dix millions d'octets. Pourtant, ce ne sont que des bits. Aujourd'hui, tu vas voir comment chacun devient des bits, et comment calculer sa taille.
À la fin de cette leçon
Remarque
Je peux expliquer comment un texte, une image et un son deviennent des bits.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Code de caractère | le nombre qui remplace une lettre ou un signe | 77 pour M |
| Unicode | une seule liste de codes pour les lettres de toutes les langues | |
| Pixel | un point de couleur dans une image | |
| Profondeur de couleur | le nombre de bits de chaque pixel | |
| Fréquence d'échantillonnage | le nombre de mesures du son par seconde | |
| Échantillon | une mesure du son, gardée sur quelques bits |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Avant de commencer
Remarque
Appuie sur Start the lab dans la barre en haut et attends que la machine soit prête. Chaque bouton Run tape sa commande dans le terminal, l'une après l'autre.
Chaque caractère a un numéro
Un ordinateur garde une lettre sous la forme de son code de caractère. Dans la plus vieille liste courante, A vaut 65, M vaut 77 et m vaut 109. L'espace vaut 32. La fin de ligne est aussi un caractère, le numéro 10.
Unicode donne un code à toutes les lettres de toutes les langues, et aux émojis. Les 128 premiers codes sont ceux de la vieille liste et prennent un octet chacun. Les lettres accentuées en prennent plus.
Va dans le dossier arch
cd ~/archAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Demande trois codes à Python
python3 -c "print(ord('M'), ord('m'), chr(70))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écris le mot Oui dans un fichier
echo Oui > oui.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Affiche chaque octet en nombre
od -t u1 oui.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Combien d'octets pour é ?
python3 -c "print(chr(233), len(chr(233).encode()))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une image est une grille de pixels
Une image est gardée sous forme de grille de pixels. La largeur fois la hauteur donne le nombre de pixels : c'est la définition de l'image.
Chaque pixel est un nombre pour sa couleur. Avec une profondeur de couleur de 1 bit, un pixel est noir ou blanc. Avec 8 bits, il y a 256 couleurs. Un téléphone utilise 24 bits, soit environ 16,7 millions de couleurs.
Exemple : la taille d'une image
| Image | Pixels | Bits par pixel | Bits | Octets |
|---|---|---|---|---|
| 4 sur 2, noir et blanc | 8 | 1 | 8 | 1 |
| 200 sur 100, 256 couleurs | 20 000 | 8 | 160 000 | 20 000 |
| 1280 sur 720, toutes couleurs | 921 600 | 24 | 22 118 400 | 2 764 800 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Écris une image de huit pixels
printf 'P1\n4 2\n1 0 0 1\n0 1 1 0\n' > motif.pbmAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Demande quel type de fichier c'est
file motif.pbmAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un son est mesuré très souvent
Un micro change le son en une onde. L'ordinateur mesure cette onde de très nombreuses fois par seconde. Chaque mesure est un échantillon.
La fréquence d'échantillonnage dit combien d'échantillons par seconde. Chaque échantillon prend un nombre de bits fixe. La taille en bits vaut fréquence × bits × canaux × secondes. La stéréo a deux canaux.
Exemple : une minute de son vidéo
| Étape | Calcul | Résultat |
|---|---|---|
| Échantillons par seconde | 48 000 | 48 000 |
| Bits par seconde, 16 bits, stéréo | 48 000 × 16 × 2 | 1 536 000 |
| Bits en 60 secondes | 1 536 000 × 60 | 92 160 000 |
| Octets | 92 160 000 ÷ 8 | 11 520 000 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Laisse Python faire le calcul
python3 -c "print(48000 * 16 * 2 * 60 / 8)"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup s'arrêtent quand la multiplication est finie et donnent le résultat en octets. Le calcul donne des bits. Divise par 8 pour avoir des octets, puis par 1000 pour des kilooctets, ou par 1 000 000 pour des mégaoctets.
Pour aller plus loin : plus que les pixels
motif.pbm contient huit pixels, soit huit bits. Tape wc -c motif.pbm dans le terminal pour voir sa vraie taille.
D'où viennent les octets en plus ? Tape cat motif.pbm et compte chaque caractère, fins de ligne comprises.