0% ont trouvé ce document utile (0 vote)
47 vues15 pages

Isn Codage

Transféré par

mhamedsaadi.bachir
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
47 vues15 pages

Isn Codage

Transféré par

mhamedsaadi.bachir
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

[Link]

fr

Informatique et Sciences du Numérique


Codage de l’information

1 Introduction
Les ordinateurs, comme d’autres appareils, permettent de mémoriser, de transmettre et de trans-
former des nombres, des textes, des images, des sons, etc. Ils fonctionnent avec des petits circuits élec-
troniques qui ne peuvent être, chacun, que dans deux états représentés par 0 ou 1. Ce qui correspond à
fermé ou ouvert, faux ou vrai, . . .
Une telle valeur, 0 ou 1, s’appelle un booléen, un chiffre binaire (nombre en base 2) ou encore un
bit (binary digit). La mémoire des ordinateurs contient une multitude de ces circuits à deux états appelé
circuit mémoire un bit. Un circuit composé de plusieurs de ces circuits mémoire un bit, se décrit par
une suite finie de 0 et de 1, que l’on appelle un mot. Un mot de 8 bits est un octet.
Nous devons donc représenter l’information par des suites de 0 et de 1.

2 Codages des nombres


2.1 Entiers naturels
2.1.1 Représentation en base dix
On utilise pour les nombres entiers naturels la notation décimale à position. Pour cela, dix chiffres
sont nécessaires et suffisants : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Par exemple, 3207 représente 3 milliers + 2 centaines + 0 dizaines + 7 unités.

3207 = 3 × 103 + 2 × 102 + 0 × 101 + 7

Pratiquement, si on dispose de 3207 objets identiques, et que l’on constitue des paquets de 10 objets, on
en obtient 320 et il reste 7 objets. Ensuite, avec les 320 paquets on forme des ensembles de 10 paquets,
on en obtient 32 ; puis on regroupe les 32 ensembles par 10, on obtient 3 groupes et il reste 2 ensembles.
On utilise la base dix tous les jours, mais d’autres bases sont envisageables.

2.1.2 La base cinq


Pour écrire les entiers naturels en base cinq, on a besoin de cinq chiffres : 0, 1, 2, 3, 4. Quand on
a n objets, on les groupe par paquets de cinq, qu’on groupe ensuite en paquets de cinq paquets, etc.
Cela revient à faire des divisions successives par 5, en notant à chaque fois le reste jusqu’à obtenir un
quotient égal à 0.
Par exemple, pour 47 : on obtient 9 paquets et 2 unités, puis les 9 paquets se regroupent en 1 paquet
de paquets et 4 paquets.
47 = 9 × 5 + 2 = (1 × 5 + 4) × 5 + 2 = 1 × 52 + 4 × 51 + 2 × 50
Donc 47 en base dix s’écrit 142 en base cinq.

2.1.3 La base deux


En base deux il n’y a que deux chiffres, 0 et 1, et le principe reste le même qu’en base dix.
Par exemple, pour 47 : on obtient 23 paquets de deux et 1 unités, puis les 23 paquets se regroupent
en 11 paquets de paquets et il reste 1 paquets, ensuite . . .

Serge Bays 1 Lycée Les Eucalyptus


[Link]

47 = 23 × 2 + 1 = (11 × 2 + 1) × 2 + 1 = ((5 × 2 + 1) × 2 + 1) × 2 + 1 = . . .

47 = 1 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 1 × 21 + 1

Donc le nombre écrit 47 en base dix s’écrit 101111 en base deux. On peut utiliser la notation 1011112 .
Dans la notation binaire :
• le bit (ou chiffre) le plus à gauche est appelé bit de poids fort
• le bit (ou chiffre) le plus à droite est appelé bit de poids faible

Pour mesurer des quantité d’information, l’unité de base est le bit qui prend soit la valeur 0, soit
la valeur 1. Un ensemble de 4 bits consécutifs est appelé un quartet, un ensemble de 8 bits consécutifs
est appelé un octet (byte), deux octets consécutifs (16 bits) forment un mot (word).
C’est l’octet qui est utilisé comme unité de référence pour mesurer la capacité des mémoires.

Remarque : pour multiplier par deux un nombre écrit en base deux, il suffit d’ajouter un zéro à
droite du nombre :
10112 × 102 = 101102

2.1.4 Une base quelconque


On peut généraliser à une base quelconque les méthodes précédentes.
Pour écrire les entiers naturels en base k, on a besoin de k chiffres. Quand on a n objets, on les
groupe par paquets de k, qu’on regroupe à leur tour en paquets de k paquets, etc. Autrement dit, on fait
une succession de divisions par k, jusqu’à obtenir un quotient égal à 0. Ici encore, la multiplication d’un
nombre par k consiste à ajouter un zéro à droite du nombre.
La base seize est particulièrement intéressante. On a besoin de 16 chiffres notés : 0, 1, 2, 3, 4, 5 ,
6, 7, 8, 9, puis A (dix), B (onze), C (douze), D (treize), E (quatorze) et F (quinze).
Si on travaille en base deux, l’écriture peut être très longue. Or les octets (huit bits) peuvent
s’écrire simplement en base seize. On partage l’octet en deux et chaque partie de quatre bits s’écrit avec
un chiffre de la base seize.
Démonstration : le nombre seize s’écrit 10000 en base deux et 10 en base seize : 100002 = 1016 ;
donc (a0 a1 a2 a3 a4 a5 a6 a7 )2 = (a0 a1 a2 a3 a)2 ×100002 +(a4 a5 a6 a7 )2 = (b0 )16 ×1016 +(b1 )16 =
(b0 b1 )16
Par exemple le nombre écrit 11010101 en base deux s’écrit D5 en base seize. En effet 11010101
se partage en 1101 et 0101 qui donnent respectivement D et 5 en base seize :
110101012 = 11012 × 100002 + 01012 = D16 × 1016 + 516 = D516

2.1.5 Dans l’ordinateur


Dans un ordinateur c’est le codage binaire qui est utilisé. Par exemple avec le nombre dont la
représentation décimale est 59 :
59 = 1 × 32 + 1 × 16 + 1 × 8 + 0 × 4 + 1 × 2 + 1 × 1
59 = 1 × 25 + 1 × 24 + 1 × 23 + 0 × 22 + 1 × 21 + 1 × 20
59 = 1110112 .

Avec des octets, soit huit bits, on peut représenter les entiers naturels de 0 (00000000 en base
deux) à 255 (1111 1111 en base deux). Donc 59 sera représenté par 00111011.
Si on utilise seize bits, soit deux octets, on peut représenter les entiers naturels jusqu’à 65535
(1111 1111 1111 1111 en base deux) et dans ce cas 59 sera représenté par 0000000000111011.
Avec n bits, ce système permet de représenter les nombres entre 0 et 2n − 1, donc tout nombre k
qui s’écrit :

Serge Bays 2 Lycée Les Eucalyptus


[Link]

n−1
X
k= bi 2i bi ∈ {0, 1}
i=0

Actuellement un entier est en général codé sur quatre octets.

2.1.6 Addition de nombres binaires


Pour additionner deux nombres binaires on procède comme en base 10.
A partir de 0+0=0, 1+0=0+1=1 et 1+1=10 on pse l’addition comme en base dix et chaque fois
qu’il y a 1+1, on écrit 0 et on retient 1.
Par exemple :
1 1 1 0 1 vingt-neuf
+ 1 1 0 0 1 vingt-cinq
1 1 retenues
1 1 0 1 1 0 cinquante-quatre

2.2 Entiers relatifs


On pourrait utiliser un bit pour le signe et les autres bits pour la valeur absolue. Mais cette méthode
a des inconvénients. On a préféré la méthode de représentation par complément à deux qui permet de
réaliser des opérations arithmétiques sans problème. Celle-ci consiste à réaliser un complément à un de
la valeur, puis d’ajouter 1 au résultat.
Par exemple pour obtenir le codage de −5 :
000101 (codage de 5 en binaire sur 6 bits)
111010 (complément à un)
111011 (on ajoute 1) : représentation de −5 en complément à deux sur 6 bits.
Avec n bits, ce système permet de représenter les nombres entre −2n−1 et 2n−1 − 1, et tous les
nombres négatifs ont le bit de poids fort (bn−1 ) égal à 1.
Les entiers naturels de 0 à 2n−1 − 1 représentent les entiers relatifs positifs ou nul correspondants
et les entiers naturels de 2n−1 à 2n − 1 représentent les entiers relatifs négatifs de −2n−1 à −1.

Avec deux octets, soit seize bits, on représente les entiers naturels n de 0 jusqu’à 65535 et donc
les entiers relatifs de −215 = −32768 à 215 − 1 = 32767 ; les nombres n de 0 à 32767, (de 0000 0000
0000 0000 à 0111 1111 1111 1111 en base deux), servent à représenter les entiers relatifs positif ou nul
r avec r = n et les nombres n de 32768 à 65535, (de 1000 0000 0000 0000 à 1111 1111 1111 1111 en
base deux), représentent les entiers relatifs négatifs r avec r = n − 65536 :
le nombre n = 32767 représente l’entier relatif r = 32767 ;
le nombre n = 32768 représente l’entier relatif r = 32768 − 65536 = −32768 ;
le nombre n = 65535 représente l’entier relatif r = 65535 − 65536 = −1.

Remarque 1 : tous les nombres négatifs ont leur bit de poids fort à 1, alors que les nombres
positifs ont leur bit de poids fort à 0.
Remarque 2 : si on est capable de faire effectuer par une machine l’addition de deux nombres et
le passage à l’opposé d’un nombre, on peut lui faire effectuer toutes les opérations classiques.

2.3 Nombres à virgule


La norme IEEE 754 (Standard for Binary Floating-Point Arithmetic) définit la représentation de
nombres réels (appelés flottants).

Serge Bays 3 Lycée Les Eucalyptus


[Link]

Un nombre est représenté sous la forme s m × 2n ou s est le signe du nombre, n son exposant et m
sa mantisse. Cette représentation est semblable à la notation scientifique des calculatrices, sauf qu’elle
est en base deux et non en base dix.
Le signe s est + ou −, l’exposant n est un entier relatif et la mantisse m est un nombre à virgule,
compris entre 1 inclus et 2 exclu. (En notation scientifique, c’est un nombre à virgule compris entre 1
inclus et 10 exclu).
Dans l’ordinateur les nombres seront alors codés par :

"signe mantisse (tronquée) exposant (décalé)"

ces trois parties étant codées en binaire.

Par exemple, quand on utilise 64 bits pour représenter un nombre, on utilise 1 bit pour le signe, 11
bits pour l’exposant et 52 bits pour la mantisse.
• Le signe + est représenté par 0 et le signe − par 1.
• L’exposant n est un entier relatif compris entre −1022 et 1023 ; on le représente par l’entier
naturel n + 1023, qui est compris entre 1 et 2 046. Les deux entiers naturels 0 et 2 047 sont réservés
pour des situations exceptionnelles (+∞, −∞, NaN, etc).
• La mantisse m est un nombre binaire à virgule compris entre 1 inclus et 2 exclu, comprenant
52 chiffres apres la virgule. Comme cette mantisse est comprise entre 1 et 2, elle a toujours un seul
chiffre avant la virgule et ce chiffre est toujours un 1 ; il est donc inutile de le représenter et on utilise
les 52 bits pour représenter les 52 chiffres apres la virgule.

Les nombres à virgule flottante sont des approximations de nombres réels. En faisant varier l’ex-
posant n, on fait "flotter" la virgule décimale. Les différences de représentation interne des nombres
flottants d’un ordinateur à un autre obligeaient à reprendre les programmes de calcul scientifique pour
les porter d’une machine à une autre jusqu’à ce qu’un format normalisé soit proposé par l’IEEE. Les
flottants IEEE peuvent être codés sur 32 bits ("simple précision" avec 8 bits pour l’exposant et 23 bits
pour la mantisse) ou 64 bits ("double précision" avec 11 bits pour l’exposant et 52 bits pour la mantisse).

Précautions d’emploi :

exemple de la programmation de la série un des 1, u0 = 0 ; un+1 = un + 1 ;


si les un sont des nombres flottants, il existe un grand nombre flottant K tel que 1 soit negli-
gable par rapport K donc K + 1 est égal à K, comme la suite est croissante et majorée, elle est donc
convergente.
le résulat est x = 1.67772 × 107 obtenu en moins d’une seconde car finalement, l’algorithme est
en O(107 ) opérations.

Les calculs en virgule flottante sont pratiques, mais attention :


– leur précision est limitée ; cela se traduit par des arrondis qui peuvent s’accumuler de façon
gênante. (Pour cette raison, en comptabilité les calculs ne sont pas effectués en virgule flottante).
– il n’y a aucun nombre dans un voisinage suffisament petit de zéro : une représentation flottante
possède une plus petite valeur négative, une plus petite valeur positive, et entre les deux le zéro.
mais aucune autre valeur ! Que vaut dans l’ordinateur la plus petite valeur positive divisée par 2 ?
Pour comparer deux nombres flottants on vérifiera donc que la valeur absolue de leur différence
est inférieure ou égale à une précision donnée.

Serge Bays 4 Lycée Les Eucalyptus


[Link]

3 Codage des caractères et des textes


3.1 Caractères
Pour représenter un caractère, nous allons attribuer un nombre à chaque caractère. C’est le rôle
du code ASCII binaire (American Standard Code for Information Interchange) par exemple. Ce code
utilise un octet, dont le premier bit est toujours 0, par caractère et permet donc de représenter 27 = 128
caractères. Ce sont les caractères que l’on trouve sur les touches d’un clavier "qwerty" d’ordinateur :
les lettres minuscules et majuscules, les dix chiffres, des symboles, l’espace, le retour à la ligne, etc. Par
exemple, on attribue les nombres de "97" à "122" aux 26 lettres de l’alphabet a, b, c, . . . , z ; les nombres
de "48" à "57" aux neuf chiffres 0, 1, 2, . . . , 9 ; l’espace est codé par le nombre "32", le point par le
nombre "46", etc. (voir une table complète sur le site [Link])
Attention à ne pas confondre un chiffre et le caractère qui le représente. Les caractères 0, 1, 2, 3, 4
correspondent dans le code ASCII aux nombres 48, 49, 50, 51, 52. (30, 31, 32, 33, 34 en hexadécimal.)
Ce code a été conçu pour des textes écrits en anglais. Or, en français, nous avons des accents, la
cédille, et dans d’autres langues, des caractères complètement différents, caractères chinois, indiens,
russes, grecs, arabes, hébreus, éthiopiens, . . . Il y a donc eu diverses extensions, par exemple le code
latin-1, pour le français qui contient 191 caractères.
Actuellement, l’Unicode recense près de 110000 caractères et existe en plusieurs versions. La
version UTF-8 (Universal Transformation Format sur 8 bits ou plus), codage de taille variable, a été
conçue pour coder l’ensemble des caractères internationaux d’Unicode.
La principale caractéristique d’UTF-8 est qu’elle est compatible avec la norme ASCII, c’est-à-dire
que tout caractère ASCII se code en UTF-8 sous forme d’un unique octet, identique au code ASCII. Par
exemple "A" (A majuscule) a pour code ASCII 65 et se code en UTF-8 par l’octet 65. Les caractères
non ASCII sont codés sur 2 à 4 octets. Le caractère C (euro) se code par exemple sur 3 octets : 226,
130, et 172.
A noter que pour les SMS, messages courts de 160 octets, on a vu la réapparition des techniques
de codage de texte sur des mots de sept bits.

3.2 Textes simples


On représente un texte en écrivant les caractères les uns après les autres.
Voici l’exemple d’un texte où on a séparé les octets ;
en binaire : 00111000 00100000 01100010 01101001 01110100 01110011 00101110
en hexadécimal : 38 20 62 69 74 73 2E
en décimal : 56 32 98 105 116 115 46
D’après le code ASCII, le nombre 56 correspond au caractère "8", le nombre 32 au caractère
"espace", les nombres 98, 105, 116, 115 aux caractères "b", "i", "t", "s" et le nombre 46 au "point" ;
donc le texte en français est : " 8 bits. "

4 Codage images et sons


4.1 Fichiers
Un fichier sert à stocker un texte, une image, un son, . . .
De manière très simple, un fichier est une suite de 0 et de 1, donc un mot, auquel on a donné un
nom.
Si on écrit dans un simple éditeur de texte (Bloc-notes par exemple) " Ceci est un fichier texte ",
on enregistre cela dans un fichier nommé "[Link]" et on l’ouvre avec un logiciel qui nous permet de
voir le codage de ce fichier (ici EditHexa), on obtient le résultat suivant :

Serge Bays 5 Lycée Les Eucalyptus


[Link]

F IGURE 1 – Aperçu de la fenêtre de EditHexa

On voit que l’espace est codé sur un octet par "20" en hexadécimal soit 32 en décimal (code
ASCII) ou 100000 en binaire, le "C" est codé par "43" en hexadécimal soit 67 en décimal (code ASCII)
ou 1000011 en binaire, etc. Ce fichier a une taille de 25 octets qui codent les 25 caractères.

4.2 Images
Une image sur un écran d’ordinateur est composée de pixels (picture elements). Ce sont des petits
carrés qui composent un quadrillage.
Si l’image est en niveau de gris, la couleur de chaque pixel est codée par un nombre de 0 à 255,
stocké sur un octet. Si l’image est en couleurs, trois paramètres codent le niveau de rouge, de vert et
de bleu. C’est le système RGB, (red, green, blue) ou système RVB en français. Chacune de ces trois
composantes est codée par un nombre de 0 à 255 stocké sur un octet. Le noir a pour composantes (0, 0,
0) codé 00 00 00 en hexadécimal, le blanc (255, 255, 255) codé FF FF FF en hexadécimal. Les couleurs
grises sont telles que R = G = B.
Il existe de nombreux formats pour les fichiers d’images (PNG, JPEG, GIF, EPS, TIFF, . . . ). Un
des formats les plus simples est BMP (BitMaP ) lisible par quasiment tous les visualiseurs et éditeurs
d’images.

4.2.1 Description du format BMP


Un fichier BMP est constitué par : l’en-tête du fichier, l’en-tête du bitmap, la palette (éventuelle-
ment) et le corps de l’image.

La première partie du fichier, l’en-tête, contient les données relatives au fichier. Elle fournit des
informations sur le type de fichier (Bitmap), sa taille et indique où commencent les informations concer-
nant l’image.
L’en-tête du fichier est composé ainsi :
– la signature (sur 2 octets), indiquant qu’il s’agit d’un fichier BMP à l’aide des deux caractères.
Par exemple, "B M", ou "42 4D" en hexadécimal, indique qu’il s’agit d’un Bitmap Windows.
– la taille totale du fichier en octets (codée sur 4 octets). ("82" = 142 octets dans l’exemple ci-
dessous)
– un champ réservé, (sur 4 octets), pour l’identifiant de l’application qui a créé le fichier.
– l’offset de l’image (sur 4 octets), c’est-à-dire là où commencent les informations concernant
l’image. Dans l’exemple ci-dessous, "36" en hexadécimal nous indique que l’image commence
à l’octet 54.

La deuxième partie, l’en-tête de l’image, fournit des informations sur l’image, notamment ses
dimensions et ses couleurs.
L’en-tête de l’image est composée ainsi :
– la taille de l’en-tête de l’image en octets (sur 4 octets). Par exemple "28" en hexadécimal pour
Windows, soit 40 octets.
– la largeur de l’image (sur 4 octets), (le nombre de colonnes), puis la hauteur de l’image (sur 4
octets), (le nombre de lignes), (dans notre exemple ci-dessous, c’est une image 14 par 2 pixels).

Serge Bays 6 Lycée Les Eucalyptus


[Link]

– le nombre de plans (sur 2 octets). Cette valeur vaut toujours 1


– le nombre de bits utilisés pour coder la couleur (sur 2 octets). Cette valeur peut-être égale à 1,
4, 8, 16, 24 ou 32. (Dans notre exemple ci-dessous, "18" indique une image 24 bits).
– la méthode de compression (sur 4 octets). Cette valeur vaut 0 lorsque l’image n’est pas com-
pressée, ou bien 1, 2 ou 3 suivant le type de compression utilisé.
– la taille totale de l’image en octets (sur 4 octets). (Dans notre exemple ci-dessous, "58" indique
une taille de 88 octets). Attention à ne pas confondre la taille du fichier et la taille de l’image ;
dans notre exemple, le fichier fait 142 octets, soit 14 octets pour l’en-tête du fichier, 40 octets
l’en-tête de l’image et 88 octets pour l’image.
– La résolution horizontale (sur 4 octets), c’est-à-dire le nombre de pixels par mètre horizon-
talement et la résolution verticale (sur 4 octets), c’est-à-dire le nombre de pixels par mètre
verticalement
– Le nombre de couleurs de la palette (sur 4 octets) et le nombre de couleurs importantes de la
palette (sur 4 octets). Ce champ peut être égal à 0 lorsque chaque couleur a son importance.

La troisième partie, la palette de l’image, est optionnelle. Lorsqu’une palette est définie, elle
contient 4 octets représentant chacun la composante bleue, la composante verte, la composante rouge
et un champ réservé.

La quatrième partie contient le codage de l’image.


Il commence ici à l’offset "36" et le codage se fait pixel par pixel. Les pixels sont codés en partant
de la ligne inférieure de l’image, de gauche à droite. Si l’image est en couleurs réelles, chaque pixel est
codé par un entier 24 bits (3 octets : 1 octet bleu, 1 octet vert, 1 octet rouge).
Les images en 2 couleurs utilisent 1 bit par pixel, donc un octet permet de coder 8 pixels.
Les images en 16 couleurs utilisent 4 bits par pixel, donc un octet permet de coder 2 pixels.
Les images en 256 couleurs utilisent 8 bits par pixel, donc un octet code chaque pixel.
Chaque ligne de l’image doit comporter un nombre total d’octets qui soit un multiple de 4 ; si ce
n’est pas le cas, la ligne doit être complétée par des 0 de telle manière à respecter ce critère.

Le problème avec ce format, c’est qu’il n’y a aucune compression. Une image 800 par 600 pixels
en 24 bits a une taille de 800 × 600 × 3 = 1440000 octets, soit 1, 44 Mo.

4.2.2 Exemple

F IGURE 2 – Un agrandissement d’une image 14 par 2 pixels

A partir de l’offset "36", on trouve les 14 pixels de la ligne inférieure, codés par "EE EE EE", "DD
DD DD", . . . , "11 11 11" qui correspondent à différents niveaux de gris (B = V = R).
Ensuite on a 2 octets nuls, "00 00", pour la fin de la première ligne de l’image car chaque ligne
doit être codée par un multiple de 4 octets. 14 pixels × 3 octets = 42 octets et on complète avec 2 octets
nuls pour obtenir un multiple de 4.
La deuxième ligne de l’image commence donc à l’offset "62" par "FF 00 00" pour bleu, puis "FF
FF FF" blanc, "00 00 00" noir, "FF FF FF" blanc, "00 00 FF" rouge, "FF FF FF" blanc, "00 FF 00" vert,
. . . , jusqu’au dernier pixel.

Serge Bays 7 Lycée Les Eucalyptus


[Link]

F IGURE 3 – Le codage de l’image au format BMP Windows

4.2.3 Texte en image


On commence par créer une image avec le logiciel Paint sous Windows par exemple : on ouvre
Paint, on va dans le meunu "Image", puis "Attributs" et on sélectionne "16 par 16 pixels" et "couleurs".
L’image créée est blanche pour l’instant et on peut la laisser ainsi ou dessiner et colorer ce que l’on
veut. On l’enregistre dans un dossier sous le nom "[Link]".
On ouvre alors ce fichier avec le logiciel EdiHexa et on reconnait les caractéristiques étudiées plus
haut. En particulier le codage de chaque pixel commence à l’offset "36" et chaque pixel est codé par
"FF FF FF" si l’image est restée blanche. Sur la colonne de droite, on peut voir que "FF" est le codage
ASCII du caractère "ÿ". On remplace alors la suite de "ÿ" par n’importe quel texte et on enregistre le
fichier.
On peut ouvrir ce fichier avec Paint et on constate que chaque pixel est coloré. C’est bien une
image mais on peut aussi lire le texte avec EditHexa.
On peut aussi modifier l’extension du fichier [Link] en remplaçant l’extension "bmp"
par l’extension "txt". Il suffit pour cela de renommer le fichier et de confirmer s’il y a un avertissement
de Windows. On obtient un fichier texte que l’on peut ouvrir avec le Bloc-notes. Le texte codé dans
l’image peut alors se lire sur une seule ligne !
L’extension sert à préciser le type du fichier. Paint reconnaît l’extention "bmp", et sait que chaque
pixel est codé par trois octets ; donc quand il lit "FF FF FF", il affiche un pixel blanc. Le Bloc-notes
reconnaît l’extension "txt" et va décoder chaque octet ; donc quand il lit "FF FF FF", il affiche "ÿÿÿ".

Serge Bays 8 Lycée Les Eucalyptus


[Link]

4.3 Sons

F IGURE 4 – Un son sur une durée de 300 ms

F IGURE 5 – Le même son sur une durée de 30 ms

Un son est une variation de la pression de l’air au cours du temps. On peut représenter cela par
une fonction du temps qui est une combisaison de fonctions sinusoïdales.
Pour reproduire la courbe de l’exemple ci-dessus, il faut l’échantillonnner, c’est-à-dire prendre
des mesures à intervalles réguliers. Si on prend des mesures toutes les 0,1 ms, soit 300 mesures, cela
revient à 10000 mesures par seconde. On dit que l’on échantillonne à 10000 Hz (le "Herz" est une
mesure de fréquence). Pour un son de qualité, on échantillonne à 44000 Hz, car notre oreille peut
entendre des sons aigu jusqu’à 22000 Hz environ, et pour que la reconstitution du son soit fidèle, la
fréquence d’échantillonnage doit être au moins le double de la plus haute fréquence audible.

Par exemple pour les CD (disques compacts audio), la fréquence est fixée à 44,1 kilohertz, la
valeur numérique est codée sur 16 bits et prend donc une valeur entière entre -32768 et +32767.
Pour connaître la qualité numérique d’un enregistrement, il faut connaître ces deux valeurs : la
fréquence d’échantillonnage et le nombre de bits. Une fréquence trop faible coupera tous les aigus, un

Serge Bays 9 Lycée Les Eucalyptus


[Link]

codage sur trop peu de bits diminuera ’la finesse’ de l’enregistrement. Tout dépend de l’utilisation a
posteriori du signal (musique, dictaphone, radio, ...). On peut faire un parallèle avec les images numé-
riques, la fréquence s’approchant de la résolution et le nombre de bits du nombre de couleurs possibles ;
la taille de l’image en pixel se rapprochant de la longueur du morceau enregistré.

On distingue des encodages sans perte, par exemple le format "wav" et des compressions avec
perte, par exemple le format "mp3".

Le MPEG-1/2 Audio Layer 3, plus connu sous son abréviation de mp3, est un algorithme de
compression audio capable de réduire drastiquement la quantité de données nécessaire pour restituer de
l’audio, mais qui, pour l’auditeur, ressemble à une reproduction du son original non compressé : avec
une bonne compression la différence de qualité devenant difficilement perceptible même si c’est une
ompression destructive.
Le mp3 n’est pas une technologie gratuite, même si on peut coder ou décoder sa musique de
manière tout à fait légale ; cette technologie fait l’objet de brevets et d’une licence commerciale.
L’algorithme « MPEG-1 Layer 3 » est soumis à des redevances (droits commerciaux), en France
pour toute utilisation ou implantation physique (notamment sur les baladeurs MP3).

Serge Bays 10 Lycée Les Eucalyptus


[Link]

5 Exercices
5.1 Introduction
Exercice 1
On imagine un ordinateur dont la mémoire est constituée de quatre circuits mémoire un bit. Quel
est le nombre d’états possibles de la mémoire de cet ordinateur ? Même question pour un ordinateur
dont la mémoire est constituée de huit circuits mémoire un bit, ou seize circuits. Et pour un ordinateur
dont la mémoire est constituée de 34 milliards de tels circuits ?

Exercice 2
On veut représenter chacune des sept couleurs de l’arc-en-ciel par un mot, les sept mots devant
être distincts et de même longueur. Quelle est la longueur minimale de ces mots ? Et si on veut coder
256 couleurs ?

5.2 Codage des nombres


5.2.1 Entiers naturels
Exercice 3
Un horloger excentrique a eu l’idée de fabriquer une montre sur laquelle l’heure est indiquée par
10 diodes électroluminescentes appelées 1 h, 2 h, 4 h, 8 h, 1 min, 2 min, 4 min, 8 min, 16 min et 32
min. Pour connaître l’heure, il suffit d’ajouter la valeur de toutes les diodes allumées.
Quelle heure est-il quand sont allumées les diodes 1 h, 2 h, 4 h, 1 min, 2 min, 8 min, 16 min et 32
min ?
Quelles sont les diodes allumées à 5 h 55 ?
Est-il possible de représenter toutes les heures ?
Toutes les configurations sont-elles la représentation d’une heure ?

Exercice 4
Trouver les représentation en base cinq des nombres 44, 70, 126, 289.

Exercice 5
Trouver la représentation en base dix des nombres suivants écrits en base cinq : 11, 101, 444, 2341,
401302.

Exercice 6
Trouver la représentation en base deux des nombres 11, 100, 1000.

Exercice 7
Donner les représentations en base deux des nombres 1, 3, 7, 15, 31 et 63.
Expliquer le résultat.

Exercice 8
Trouver la représentation en base dix des nombres suivants écrits en base deux : 1010, 10000,
11111111, 10001000, 10010110, 11110010000.

Exercice 9
Montrer qu’avec un mot de n bits on peut représenter les nombres de 0 à 2n − 1.

Exercice 10

Serge Bays 11 Lycée Les Eucalyptus


[Link]

Pour multiplier par dix un entier naturel exprimé en base dix, il suffit d’ajouter un 0 à sa droite,
par exemple, 12 × 10 = 120. Quelle est l’opération équivalente pour les entiers naturels exprimés en
base deux ? Exprimer en base deux les nombres 3, 6 et 12 pour illustrer cette remarque.
Et comment fait-on pour multiplier par 4, 8 ou 16 un nombre écrit en base deux ?

Exercice 11
Quelle est la représentation binaire du nombre 57 ? Et celle du nombre 198 ?
Soit m un mot de 8 bits, n l’entier naturel représenté en binaire par le mot m, m0 le mot obtenu
en remplaçant dans m chaque 0 par un 1 et chaque 1 par un 0 et n0 l’entier naturel représenté en binaire
par le mot m0 .
Exprimer n et n0 comme une somme de puissances de 2, montrer que n + n0 = 255.
Montrer que la représentation binaire du nombre 255 − n est obtenue en remplaçant dans celle de
n chaque 0 par un 1 et chaque 1 par un 0.

Exercice 12
Trouver la représentation en base seize des nombres 17, 31, 965, 6725 et 18 379.

Exercice 13
Trouver la représentation en base dix des nombres suivants écrits en base seize : 12, A0, FF, 4E2C,
ABCD, 281EF.

Exercice 14
Trouver la représentation en base deux des nombres suivants écrits en base seize : 12, A0, C4, FF.

Exercice 15
Trouver la représentation en base seize des nombres suivants écrits en base deux : 10011, 1101001,
10101010, 10011001.
Dans la mémoire des ordinateurs les circuits mémoire un bit sont souvent groupés par huit : les
octets. On utilise souvent des nombres exprimés en notation binaire, sur un, deux, quatre ou huit octets,
soit 8, 16, 32 ou 64 bits. La notation en base seize permet de raccourcir simplement l’écriture de ces
nombres. Ecrire en base seize le nombre écrit 1010101010101010 en base deux.

5.2.2 Entiers relatifs


Exercice 16
Quels entiers relatifs peut-on représenter avec des mots de 8 bits ? Combien sont-ils ? Même ques-
tion avec des mots de 32 bits et 64 bits.

Exercice 17
Trouver la représentation binaire sur huit bits des entiers relatifs 0, 64, 127, −127, −1 et −128.

Exercice 18
Trouver la représentation décimale des entiers relatifs dont la représentation binaire sur huit bits
est 0001 0001, 1000 1000, 0111 1111 et 1000 0001.

Exercice 19
Calculer la représentation binaire sur huit bits de l’entier relatif 4, puis celle de son opposé.

Pour calculer la représentation p0 de l’opposé d’un entier relatif r à partir de sa représentation


p, pour une représentation des entiers relatifs sur huit bits, on peut appliquer la méthode suivante : si

Serge Bays 12 Lycée Les Eucalyptus


[Link]

l’entier relatif r est compris entre 0 et 127, alors il est représenté sur huit bits par l’entier naturel p = r
et son opposé −r est représenté par l’entier naturel p0 = −r + 28 = −r + 256 = 256 − p. Si l’entier
relatif r est compris entre -127 et -1, alors il est représenté par l’entier naturel p = r + 28 = r + 256 et
son opposé −r est représenté par l’entier naturel p0 = −r = 256 − p.
Donc, sauf quand x = -128, dont l’opposé n’est pas représentable sur 8 bits, si un entier relatif r
est représenté par l’entier naturel p, son opposé −r est représenté par l’entier naturel p0 = 256 − p =
(255 − p) + 1. Calculer 255 − p = 11111111 − p est facile, puisqu’il suffit, dans la représentation
binaire de p, de remplacer chaque 0 par un 1 et chaque 1 par un 0. Il suffit ensuite d’ajouter 1 au nombre
obtenu.

Exercice 20
En appliquant la méthode ci-dessus, calculer la représentation binaire sur huit bits de l’entier relatif
-16, puis de son opposé.

Exercice 21
Montrer que le bit le plus à gauche vaut 1 pour les entiers relatifs strictement négatifs et 0 pour les
entiers relatifs positifs ou nuls.

Exercice 22
Représenter les entiers relatifs 96 et 48 en binaire sur huit bits. Ajouter les deux nombres binaires
obtenus. Quel est l’entier relatif obtenu ? Pourquoi est-il négatif ?

Exercice 23
Expliquer comment faire une soustraction de deux nombres binaires sur huit bits à partir du calcul
de l’opposé et de l’addition de deux nombres.
Calculer ainsi 15 - 7.

5.2.3 Nombres à virgule


Exercice 24
Trouver le nombre à virgule représenté par le mot
1100010001101001001111000011100000000000000000000000000000000000

Exercice 25
Trouver le nombre à virgule représenté par le mot :
0001000000111101001110010101100000000000000000000000000000000000

Exercice 26
Comment est représenté le nombre à virgule 2−1022 (qui est égal à 2, 225 . . . × 10−308 ) ?

Exercice 27
Comment est représenté le nombre entier 7 ? Et le nombre à virgule 7,0 ?

Exercice 28
A combien de décimales environ correspondent 52 chiffres binaires après la virgule ?

Exercice 29
Quel est le plus grand nombre à virgule que l’on peut représenter en binaire ?
Quel est le plus petit nombre à virgule, donc négatif, que l’on peut représenter en binaire ?

Serge Bays 13 Lycée Les Eucalyptus


[Link]

Quel est le plus petit nombre à virgule strictement positif que l’on peut représenter en binaire ?

Exercice 30
Quelle précision perd-on si on divise par deux un nombre à virgule avant de le remultiplier par
deux ?

Exercice 31
A chaque multiplication de deux nombres à virgule, on arrondit le calcul en ne gardant que 52
chiffres binaires après la virgule, ce qui introduit une erreur relative de l’ordre de 2−52 . Quelle est la
valeur de cette erreur en base dix ?
Si on fait plusieurs multiplications, ces erreurs s’accumulent. Quelle est l’erreur relative d’un
calcul qui est formé d’un million de multiplications, qui dure quelques millisecondes sur un ordinateur
usuel ?

Exercice 32
On considère le programme suivant :

1 double x, y;
2 x = 1.0;
3 y = x + 1.0;
4 while (y - x == 1.0) {
5 x = x * 2.0;
6 y = x + 1.0;}

Si l’on calculait sur des nombres rationnels exacts, que se passerait-il lors de l’exécution de ce
programme ?
Expliquer ce qui va se passer si on exécute ce programme.

Exercice 33
On considère le programme suivant :

1 double a;
2 int n;
3 a = 0.0;
4 for (n = 1; n <= 10; n = n + 1) {
5 a = a + 0.1;
6 [Link](a);}

Si l’on calculait sur des nombres rationnels exacts, que se passerait-il lors de l’exécution de ce
programme ?
Vérifier que la représentation binaire de 0,1 est
0011111110111001100110011001100110011001100110011001100110011010.
Quel nombre décimal cette représentation désigne-t-elle en réalité ?
En déduire les représentations binaires de 0,2, 0,3 et les nombres décimaux que cette représentation
désigne en réalité.
Expliquer ce qui va se passer si on exécute ce programme.

Serge Bays 14 Lycée Les Eucalyptus


[Link]

5.3 Codage de textes

Exercice 34
Trouver la représentation binaire en ASCII du texte "Je pense, donc je suis."

Exercice 35
Trouver le texte représenté en ASCII binaire par la suite de bits
010000110010011101100101011100110111010000100000
011001100110000101100011011010010110110001100101.

Exercice 36
Trouver le texte représenté en ASCII binaire par la suite de bits
001100000111010001100101011101000111010000110001.

Exercice 37
Trouver le texte représenté en ASCII hexadécimal par :
43 45 20 54 45 58 54 45 20 45 53 54 20 45 4E 20 4D 41 4A 55 53 43 55 4C 45 53 20 21

Exercice 38
Traduire en ASCII binaire une phrase de votre choix qui comporte des accents mais en les oubliant.
Traduire ensuite cette phrase en UTF-8 avec les accents.

Exercice 39
Traduire une phrase en ASCII binaire, puis la passer à son voisin qui la décode.

Serge Bays 15 Lycée Les Eucalyptus

Vous aimerez peut-être aussi