Presentation Information
Presentation Information
Presentation Information
Janvier 2015
Les ordinateurs sont capables d’effectuer de nombreuses opérations sur de nombreux types de contenus (images,
vidéos, textes, sons,...). Cependant, quel que soit leur type, ces contenus sont manipulés par la machine au
travers d’une représentation n’utilisant que des 0 et des 1, qui est dite « binaire ». Nous présentons dans cette
fiche les principes de cette représentation pour les nombres et les textes.
1 L’information et sa représentation
Une information est une connaissance qui fait sens pour les personnes concernées et qui peut être représentée
par des symboles. Bien sûr, la notion de sens n’est pas pertinente pour un ordinateur, qui n’est qu’une machine,
et c’est uniquement la représentation de l’information sur laquelle il va agir. Ainsi un traitement d’informations
par un ordinateur consiste-t-il en des transformations de leurs représentations. Ces transformations peuvent
être des calculs, des réagencements, des ajouts, des suppressions, des copies et toute autre opération consistant
en des manipulations de symboles. Pour éviter l’expression « représentation d’informations », un peu longue,
on parlera parfois de manière équivalente de « donnée ».
Dans un ordinateur, une donnée est toujours une succession (appelée « mot ») de caractères 0 et 1. Ces caractères
0 et 1 sont appelés des bits (contraction de « binary digits », c’est-à-dire « chiffres binaires » en anglais). Par
exemple, le mot 1011001101011 est une donnée, le mot 0 est une donnée, et le mot 1 aussi. Puisque la donnée
minimale ne peut avoir que deux valeurs, on dit que la représentation est binaire.
La raison pour laquelle les ordinateurs manipulent des données binaires est liée au fonctionnement de leurs
composants physiques. Les transistors et les condensateurs, qui sont les éléments de base d’un ordinateur,
possèdent deux états stables : activé/désactivé ou chargé/déchargé. Ainsi, un transistor dans l’état activé va-t-il
stocker l’information 1 (ou 0 s’il est dans l’état désactivé).
Un bit ne pouvant contenir qu’une valeur parmi deux possibles (0 ou 1 ), il faudra combiner une multitude de
bits pour représenter une information plus complexe comme une valeur numérique entière ou à virgule, positive
ou négative. C’est l’objet des Sections 2 et 3. De même, pour représenter un texte, on va d’abord représenter
chaque caractère du texte par un nombre entier, puis représenter chaque nombre entier par plusieurs bits. C’est
l’objet de la Section 4.
Pour représenter un nombre en binaire, nous n’avons que deux symboles, 0 et 1, mais toujours le même principe :
« compter par paquets de deux ». Ainsi, toujours avec la notation usuelle de gauche à droite, cela se traduit par
le fait que chaque chiffre dans un nombre binaire est associé à une puissance de deux.
Par exemple 11111011110 est le nombre composé de zéro unité, une « deuzaine » (un paquet de deux unités),
une quatraine (deux paquets de deux), une huitaine (deux paquets de deux paquets de deux), une seizaine (deux
paquets de deux paquets de deux paquets de deux), zéro paquet de trente deux, un paquet de soixante quatre,
un paquet de cent vingt huit, un paquet de deux cent cinquante six, un paquet de cinq cent douze et un paquet
de mille vingt quatre.
Autrement dit, en revenant pour le calcul par commodité à l’écriture habituelle en base dix :
11111011110 = 1 × 210 + 1 × 29 + 1 × 28 + 1 × 27 + 1 × 26 + 0 × 25 + 1 × 24 + 1 × 23 + 1 × 21 + 1 × 21 + 0 × 20
ce qui donne (en remplaçant les puissances de deux par leur valeur) :
Le même nombre est donc représenté en base dix par 2014 et en base deux par 11111011110. C’est pourquoi il
est important lorsqu’on s’intéresse aux représentations des nombres, de préciser de laquelle on parle : ainsi 1000
en base dix, c’est mille, mais 1000 en base deux, c’est huit. Et en base cinq (on utilise les cinq symboles 0,1,2,3,4
et on fait des paquets de cinq), ce même 1000 représenterait cent vingt cinq (un paquet de cinq paquets de cinq
paquets de cinq unités).
Pour préciser qu’on utilise la notation binaire, on peut convenir d’utiliser une fonte différente pour l’écriture
du nombre, comme nous l’avons fait jusqu’ici dans cette fiche. Par ailleurs, pour éviter de confondre à l’oral
un nombre et sa représentation dans une base autre que la base dix, il est préférable (mais parfois fastidieux),
de l’énoncer chiffre par chiffre : on dirait ainsi « un zéro zéro zéro en base deux » pour 1000, et on réserverait
« mille » pour 1000 en base dix, puisque le nombre mille en binaire s’écrit 1111101000.
Nous venons de voir comment trouver la représentation en décimal d’un nombre (représenté en) binaire. Pour
effectuer l’opération inverse, c’est-à-dire trouver la représentation binaire d’un nombre écrit en base dix, il suffit
de chercher la plus grande puissance de 2 qui est inférieure ou égale à ce nombre, de lui enlever cette puissance
de 2 et de recommencer jusqu’à obtenir 0. Toutes les puissances de 2 retranchées au nombre à convertir seront
associées à un coefficient de 1. Les autres puissances de 2 dans le nombre converti seront associées à un coefficient
de 0.
Par exemple, nous souhaitons écrire mille (1000) en binaire. La plus grande puissance de 2 qui est inférieure à
1000 est 512 = 29 , puisque 210 = 2 × 512 = 1024 est trop grand. On sait donc que le coefficient associé à 29
dans la représentation binaire de mille sera 1. On retranche ensuite 512 à 1000, ce qui donne 1000 − 512 = 488,
et on recommence le processus avec 488 jusqu’à ce qu’on obtienne 0 :
1000 − 512 = 488 avec 29 = 512
488 − 256 = 232 avec 28 = 256
232 − 128 = 104 avec 27 = 128
104 − 64 = 40 avec 26 = 64
40 − 32 = 8 avec 25 = 32
8 − 8 = 0 avec 23 = 8
La représentation de mille en base deux est donc 1111101000.
Cependant, il est clair que disposer de dix bits de mémoire est largement insuffisant pour pouvoir stocker des
données intéressantes. Dans la section précédente, nous avions besoin de onze bits pour représenter le nombre
2014 par 11111011110. Comme 2014 reste un nombre assez petit, on peut imaginer qu’il faudra beaucoup plus
de place dans la mémoire d’un ordinateur.
Groupe « Faire de l’informatique sans ordinateur à l’école et au collège »
Janvier 2015
Ainsi, pour faciliter la lecture par les humains de ces nombres dont la représentation en binaire est très longue,
on a décidé de grouper les bits par paquets de huit. On appelle « octet » un groupe de huit bits. Attention, un
octet se dit « byte » en anglais : un byte est un groupe de huit bits, et non pas un seul bit.
Lorsque l’ordinateur mémorise un nombre, il lui réserve toujours un nombre entier d’octets, en comblant les
cases inutilisées à gauche de la représentation du nombre par des 0. Ainsi pour stocker 111 11011110, qui est la
représentation binaire de 2014, un octet ne peut pas suffire, puisqu’il y a onze bits. On utilise donc deux octets
c’est-à-dire seize bits, et on écrit en fait 00000111 11011110.
Sur deux octets, c’est-à-dire seize bits, on peut représenter 216 = 65536 nombres différents : le plus petit
d’entre eux est représenté par 00000000 00000000, c’est le nombre 0, et le plus grand est représenté par
11111111 11111111, c’est le nombre 65535. En résumé, si l’on dispose de deux octets (16 bits) en mémoire, on
peut stocker toute valeur comprise entre 0 et 216 − 1 = 65535.
En conclusion, il faut retenir que les nombres manipulés par un ordinateur sont limités par le nombre d’octets
utilisés pour stocker leur représentation binaire.
Toutefois, le préfixe Giga mentionné ci-dessus est en réalité un abus de langage. En effet, Giga et les autres
préfixes courants (Kilo, Méga, ...) sont normalement des raccourcis pour exprimer des puissances de dix et
non des puissances de deux. On les utilise cependant pour désigner des puissances de deux en jouant sur les
approximations donnée par le tableau suivant :
Pour la petite histoire, certains fabricants de disques durs jouent (à leur avantage) sur cette approximation en
vendant par exemple un disque dur d’1 To (Tera octet) contenant précisément 1012 octets, et non 240 . Ainsi le
client perd 99 511 627 776 octets, soit plus de 99 Go (Giga octets).
y a aussi d’autres inconvénients sur lesquels nous ne nous étendrons pas, cette méthode simple n’est pas celle
qui est utilisée dans la plupart des ordinateurs.
La méthode utilisée dans les ordinateurs ne diffère de la précédente que pour les nombres négatifs. Commençons
par un petit exemple, où on n’utilise que quatre bits par nombre. Les huit entiers positifs ou nuls de zéro à sept,
sont représentés simplement en binaire par 0000, 0001, . . ., 0110, 0111, comme on vient de le voir : le premier
bit 0 représente le signe et les trois bits suivants représentent la valeur absolue du nombre.
Les huit entiers strictement négatifs de −8 à −1 sont représentés respectivement par 1000, 1001, . . ., 1110 et
1111. Notons que le premier bit est bien un 1. Plus précisément, la représentation du nombre négatif x est celle
de l’entier naturel 24 + x : pour représenter −8, on calcule 24 − 8 = 16 − 8 = 8, et on a vu à la Section 2 que 8
en base dix est représenté par 1000 en base deux, donc maintenant la représentation de −8 est 1000. De même,
la représentation de −1 est 1111 car on a 24 − 1 = 16 − 1 = 15, qui s’écrit 1111 en base deux.
Avec cette méthode, appelée la notation en complément à deux, on a une légère asymétrie, puisque les nombres
représentés vont de −8 à −1 pour les négatifs, puis 0 , et de 1 à 7 pour les positifs. On n’a plus qu’une seule
façon d’écrire zéro, c’est 0000. Les représentations des nombres négatifs sont reconnaissables au fait qu’elles
commencent par un 1, tandis que celles des nombres positifs ou nuls commencent par un 0.
Maintenant, si on se place dans le cas plus général où chaque nombre occupe k octets (8 × k bits), la notation
en complément à deux permet de représenter les nombres positifs ou nuls de 0 à 28k−1 − 1 et les nombres
strictement négatifs de −28k−1 à −1 :
• Il n’y a qu’une seule façon d’écrire zéro, c’est 00000000 . . . 00000000.
• Un entier relatif strictement positif x compris entre 1 et 28k−1 − 1 est représenté par l’entier naturel x. Sa
représentation commence par un 0.
Par exemple, sur 2 octets, 2014 est représenté par 00000111 11011110.
• Un entier relatif strictement négatif x compris entre −28k−1 et −1 est représenté par l’entier naturel 28k +x,
qui, pour sa part, est compris entre 28k − 28k−1 = 28k−1 et 28k − 1. Cette représentation commence par
un 1.
Par exemple, sur deux octets, −2014 est représenté par 11111000 00100010, qui est la notation en base
deux de l’entier naturel 216 − 2014 = 65536 − 2014 = 63522.
La représentation binaire des nombres à virgule utilisée en informatique est du même type que la notation dite
« scientifique » utilisée par les calculatrices : le nombre 201, 4 s’écrit ainsi 2, 014E2 puisque 201, 4 = 2, 014 × 102 .
L’exposant peut-être négatif si le nombre est compris entre −1 et 1 : par exemple 0, 00214 s’écrit 2, 014E − 3,
car il est convenu de noter 10−3 pour 1013 . La mantisse peut-être précédée du signe − si le nombre est négatif :
par exemple −201, 4 s’écrit −2, 014E2.
En binaire, on peut adopter une notation similaire, en écrivant la mantisse et l’exposant en base deux. Com-
mençons de nouveau par un petit exemple : on utilise un bit pour le signe du nombre (0 pour un nombre positif
et 1 pour un nombre négatif), quatre bits pour l’exposant (un entier relatif représenté en complément à deux)
Groupe « Faire de l’informatique sans ordinateur à l’école et au collège »
Janvier 2015
et cinq bits pour la mantisse (un nombre à virgule avec un seul bit à gauche de la virgule, compris entre un
inclus et deux exclu), soit dix bits en tout. Le nombre représenté par 1 0101 11100 est négatif (le premier bit
vaut 1), il a pour exposant 5 (les quatre bits suivants sont 0101) et pour mantisse 1, 1100 en base deux, soit
1 + 12 + 41 = 1, 75 en base dix, c’est donc le nombre −1, 75 × 25 = −56. De même, le nombre représenté par
0 1101 11100 est positif, son exposant est négatif et vaut 24 − 13 = −3, et sa mantisse est de nouveau 1, 1100
en base deux, c’est-à-dire 1, 75 en base dix, c’ est cette fois le nombre 1, 75 × 2−3 = 1, 75 × 81 = 0, 21875
La représentation des nombres à virgule communément utilisée en informatique (norme IEE 754) est une variante
de la précédente, qu’on appelle la représentation en « virgule flottante ». On se place maintenant dans le cas où
chaque nombre occupe huit octets, soit 64 bits :
• On réserve toujours le premier bit pour le signe (0 pour un nombre positif et 1 pour un nombre négatif).
• Les onze bits suivants sont utilisés pour l’exposant, qui est un nombre relatif compris entre −1022 et 1023.
Pour faciliter la comparaison entre deux nombres à virgule, on représente en fait l’exposant x comme
l’entier naturel x + 1023, qui est compris entre 1 et 2046 = 211 − 2 (donc représentable sur onze bits en
base 2). On réserve les valeurs 0 et 2047 pour des cas particuliers (voir ci-dessous).
• Il reste 52 bits pour la mantisse. Comme le premier bit est forcément un 1, on ne l’écrit pas, et on utilise
l’ensemble des 52 bits après la virgule. La mantisse est donc un nombre binaire à virgule compris entre 1
inclus et 2 exclu.
• On garde à part quatre valeurs particulières :
? 0 00000000000 0000000000000000000000000000000000000000000000000000
et 1 00000000000 0000000000000000000000000000000000000000000000000000 représentent tous deux
zéro ;
? 0 11111111111 0000000000000000000000000000000000000000000000000000, qu’on note +∞, repré-
sente une valeur trop grande pour être représentée ;
? 1 11111111111 0000000000000000000000000000000000000000000000000000, qu’on note −∞, repré-
sente une valeur négative trop petite pour être représentée ;
? 1 11111111111 1111111111111111111111111111111111111111111111111111, qu’on note N aN (not a
number), représente une valeur indéfinie.
• Notons que certains mots de 64 bits ne sont pas utilisés du tout : ce sont ceux qui ont un exposant
00000000000 ou 11111111111 et qui ne sont pas parmi les quatre valeurs particulières.
Les caractères sont non seulement les lettres de l’alphabet, majuscules et minuscules, mais aussi les signes de
ponctuation, l’espace, les chiffres, les parenthèses, etc. En français, il faut encore ajouter les lettres accentuées,
le ç, le œ, et d’autres caractères spéciaux pour d’autres langues (ñ ou ǒ). Il y a aussi des langues qui n’utilisent
pas l’alphabet latin, comme le grec, le russe, le chinois, le japonais, le coréen, l’arabe...
Le format Unicode est un format universel permettant de représenter des textes écrits dans n’importe quelle
langue. Il utilise jusqu’à 32 bits par caractère et permet d’en représenter plus de 110000 différents. Il existe
plusieurs versions d’Unicode, parmi lesquelles la norme appelée UTF-8 est destinée à être utilisée sur l’ensemble
des ordinateurs de la planète. Ce n’est malheureusement pas encore tout-à-fait le cas, et on rencontre de temps
en temps des problèmes d’encodage des caractères lorsqu’on tente de lire un texte en utilisant un format différent
de celui avec lequel il a été représenté. Par exemple, dans un texte écrit à l’aide du format ISO-8859-1 (que nous
n’évoquerons pas plus avant) et lu à l’aide du format UTF-8, tous les « é » seront remplacés par des « Ã
c »,
et ainsi de suite.
Nous présentons ci-dessous un format, qui est de moins en moins utilisé, mais qui a l’avantage d’être simple à
comprendre : le code ASCII (American Standard Code for Information Interchange). Dans la version la plus
simple, chaque caractère est codé sur 7 bits (en réalité sur un octet, mais avec le premier bit toujours à 0). Il y
a donc 27 = 128 caractères possibles, correspondant aux nombres de 0 à 127. La liste de ces 128 caractères est
donnée dans le tableau de la Figure 1.
On observe que les lettres majuscules A, B, C, . . . , Z sont codées par les nombres consécutifs 65, 66, 67, . . . ,
90. Les lettres minuscules a, b, c, . . . , z correspondent aux nombres 97 à 122. Il est intéressant de noter que les
chiffres de 0 à 9 sont codés par les nombres de 48 à 57. Les codes de 0 à 31 ne correspondent pas à des caractères
du clavier, mais à des symboles de mise en page comme le retour à la ligne (« CARRIAGE RETURN »).
Groupe « Faire de l’informatique sans ordinateur à l’école et au collège »
Janvier 2015
Par exemple, l’expression « Le code ASCII » se code numériquement par 76 101 32 99 111 100 101 32 65 83
67 73 73, et en binaire elle devient 01001100 01100101 01000000 01100011 01101111 01100100 01100101
01000000 01000001 01010011 01000011 01001001 01001001.
On note que ce format très limité ne permet pas de représenter tous les caractères utilisés en français, puisqu’il
est limité aux 26 lettres majuscules et minuscules.
Figure 1 – Les codes ASCII en décimal (base 10), hexadécimal (base 16), octal (base 8) et binaire (base 2). La
dernière colonne donne le caractère correspondant.
5 Conclusion
Nous avons vu dans cette fiche quelques principes de base de la représentation de l’information dans un ordi-
nateur, quand cette information est de type numérique ou textuelle.
Le domaine de l’informatique appelé « arithmétique des ordinateur » est celui qui étudie les différentes façons
de représenter les nombres en informatique, et les meilleures façons de calculer selon la représentation choisie.
Pour les lecteurs souhaitant aller plus loin, il existe de nombreux ouvrages destinés aux étudiants des premières
années d’université traitant de ce sujet, et on trouve aussi facilement des cours en accès libre sur internet.
Comme ouvrage de référence en français sur ce thème, on peut par exemple citer [1] (voir ci-dessous).
Références
[1] J.-C. Bajard et J.-M. Muller (coord.). Calcul et arithmetique des ordinateurs. Hermès (Traité IC2), 2004.