Professional Documents
Culture Documents
COURS
Codage des données
Comprendre la manière dont l'information est stockée en machine
Auteur Version - Date Nom du fichier
G. VALET Version 1.1 - Sept 2009 cours-codage-donnees.docx
Après quelques rappels de numération effectués, ce cours vous permettra de comprendre la manière dont sont
codées les informations en binaire en machine
COURS Codage des données Version 1.1 - Sept 2009
Chapitre 1 : Sommaire
Chapitre 2 : Introduction
D'une façon générale, il y a trois types d'informations à coder en machine :
les informations de type numérique,
les informations de type alphanumérique,
les instructions, c’est-à-dire les ordres que l'on donne au microprocesseur pour exécuter le
programme.
On appelle codage d’une donnée, la manière dont elle est décrite sous une forme compréhensible par la
machine, c'est-à-dire sous forme binaire. L’ordinateur ne pourra traiter et stocker les données que sous
cette forme. Il a donc fallu inventer une représentation binaire des données
La représentation d’un nombre sous forme binaire en vue de son traitement informatique impose que
celui-ci soit codé sur un nombre de bits prédéfini. En fonction de la taille des nombres à traiter, le nombre
de bits imposera certaines limitations.
Par exemple, un entier non signé codé sur 8 bits se limitera à 28 = 256 possibilités soit un entier dont la
valeur ne pourra excéder 255 (Le « zéro » est lui aussi pris en compte).
A. Numération
A.1. Rappels
a. Représentation binaire
Rappelons, que dans un système informatique, une information élémentaire est représentée par un
élément binaire appelé bit. Le bit est donc l'unité d'information, qui a deux états, par exemple 0,1; Vrai,
Faux, etc.
Pour n bits, nous avons 2n représentations. Ce qui donne le tableau suivant pour n<4:
N 1 2 3 4
Nombre de repr. 21 = 2 22 = 4 23 = 8 24 = 16
Représentations 0 00 000 0000
1 01 001 0001
10 010 0010
11 011 0011
100 0100
101 0101
110 0110
111 0111
1000
1001
1010
1011
1100
1101
1110
1111
b. Les bases
Voici également le tableau récapitulatif des 16 premiers nombres et leurs diverses représentations dans
les bases les plus utilisées :
c. Un bit
C’est le plus petit élément numérique pouvant prendre 2 valeurs : 0 ou 1. Ce terme est repris dans la
définition d’un système informatisé pour spécifier le nombre d’éléments numériques (bits) pouvant être
traité simultanément (Système 32,64 ou 128 bits)
d. Un octet
Souvent rassemblés par paquet de 8 bits, l’octet symbolise un nombre binaire. Un système 32 bits est
capable de traiter 4 octets simultanément. Le bit de poids fort est toujours situé à gauche et le bit de
poids faible à droite. Le nombre se lit de gauche à droite :
Bit de poids fort Un bit Bit de poids faible
0 1 1 0 1 0 1 1
Un quartet Un quartet
Un octet
Les systèmes informatiques ne sont pas capables de traiter autre chose que des nombres binaires. Par
exemple, une adresse IP (ex : 192.168.0.1) sera stockée dans un ordinateur sous la forme de 4 octets de 8
bits chacun.
3 1 7
Dans cet exemple, augmenter de 1 le chiffre des centaines à pour conséquence d’incrémenter de 100 le
nombre lui-même, alors qu’augmenter de 1 le chiffre des dizaines renvient à incrémenter de 10. On voit
bien que chaque chiffre n’a pas le même poids par rapport au nombre représenté.
Le poids fort est donc le chiffre le plus à gauche qui, s’il est changé, provoquera une modification plus
importante quant au nombre représenté que tous les autres situés plus à droite. Il s’agit donc du chiffre
le plus significatif.
A l’inverse, le poids faible d’un nombre est celui qui est le moins significatif.
La valeur du poids dépend de la base numérique dans laquelle est représentée le nombre. Cette valeur
suit la règle suivante où x est égal à la base numérique :
Rang : 3 2 1
3 5 8
𝑁 = 𝑎𝑛 × 𝑏 𝑛 + ⋯ + 𝑎3 × 𝑏 3 + 𝑎2 × 𝑏 2 + 𝑎1 × 𝑏1 + 𝑎0 × 𝑏 0
où :
b est la base de la représentation (2 pour binaire, 10 pour décimal ou 16 pour hexadécimal )
an : Le chiffre de poids n constitué de l’un des symboles disponibles dans la base b (0 et 1 pour le
binaire, 0..9 pour le décimal, etc..)
On peut généraliser :
𝑛
𝑁= 𝑎𝑖 × 𝑏 𝑖
𝑖=0
a. Exemple de la base 2
En base 2, il existe deux symboles : 0 et 1
𝑁 = 1 × 26 + 0 × 25 + 1 × 24 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 = 89
b. Exemple de la base 10
En base 10, il existe 10 symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
𝑁 = 7 × 101 + 8 × 100 = 78
c. Exemple de la base 16
En base 16, il existe 16 symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
397 2
1 198 2
0 99 2
1 49 2
1 24 2
0 12 2
0 6 2
0 3 2
1 1
𝑁2 = ⋯ + 𝑎7 × 27 + 𝑎6 × 26 + 𝑎5 × 25 + 𝑎4 × 24 + 𝑎3 × 23 + 𝑎2 × 22 + 𝑎1 × 21 + 𝑎0 × 20
𝑁2 = … + 24 × 𝑎7 × 23 + 𝑎6 × 22 + 𝑎5 × 2 + 𝑎4 + 𝑎3 × 23 + 𝑎2 × 22 + 𝑎1 × 21 + 𝑎0
On voit qu’en regroupant les chiffres binaires par 4, on obtient l’équivalence en hexadécimal.
b. Exemple
En regroupant les chiffres binaires par 4, on obtient :
N16 = 8 6 A
N2 = 1000 0110 1010
𝑋 = 𝑎1 × 𝑏 −1 + 𝑎2 × 𝑏 −2 + 𝑎3 × 𝑏 −3 + ⋯ + 𝑎𝑛 × 𝑏 −𝑛
Où :
b : Base
ai : Symboles de la base appartenant à l’ensemble 0,1, … , 𝑏 − 1
Par exemple :
a. Conversion en décimal
Pour calculer ce nombre en décimal, il suffit de connaître les valeurs décimales des puissances négatives
de 2 :
b. Conversion en binaire
La conversion d’un nombre fractionnaire en binaire est un peu plus délicate. La précision du résultat
dépend du nombre de bits réservé au codage du nombre.
𝑋 = 𝑎1 × 𝑏 −1 + 𝑎2 × 𝑏 −2 + 𝑎3 × 𝑏 −3 + ⋯ + 𝑎𝑛 × 𝑏 −𝑛
Pour connaître les différents termes ai, il faut multiplier par 2 jusqu’à ce que la partie fractionnaire soit
nulle. Soit par exemple pour convertir 0.72145 en binaire :
Nous remarquons que la détermination des coefficients ai ne peut stopper que si la partie fractionnaire
devient nulle et donc que ce calcul n'est exact que dans ce cas. Le résultat sera d’autant plus précis que le
nombre de bits servant à coder est grand.
Voici un tableau qui met en relation le nombre de bits avec les intervalles possibles :
Le tableau suivant donne la représentation mémoire d’entiers naturels en fonction du nombre de bits :
b. Complément à 1
Le principe du complément à 1 est très simple puisqu’il s’agit d’inverser tous les bits du nombre pour
trouver le nombre négatif. Voici la représentation en complément à 1 du nombre 23 :
Nombre Binaire
123 0 1 1 1 0 0 0 1
-123 1 0 0 0 1 1 1 0
Nombre Binaire
123 0 1 1 1 0 0 0 1
-123 1 0 0 0 1 1 1 0
-123+123 1 1 1 1 1 1 1 1
c. Complément à 2
Afin de respecter les règles d’addition d’un nombre positif et d’un nombre négatif, la règle à suivre pour
trouver le nombre négatif est celle du « complément à 2 ». Elle consiste à :
Inverser tous les bits du nombre positif. Les « zéros » deviennent des « un » et vice-versa
Ajouter 1 au nombre obtenu
Remarque : Chaque bit du nombre positif est inversé puis on ajoute 1 pour trouver le nombre positif. On
remarquera également que si on additionne (addition binaire bien entendu) un nombre avec son
complément, on obtient 0 (avec une retenue)
d. Quelques exemples
Voici quelques exemples :
B.2. Principe
a. Notation standard
Le principe de la virgule flottante est à rapprocher de la notation exponentielle utilisée en
mathématiques. En effet, pour représenter un nombre réel, il est possible d’utiliser 2 notations
différentes :
Dans le cas suivant, il est plus judicieux d’utiliser la notation exponentielle afin d’économiser des chiffres
significatifs :
2 Notations décimales du même nombre
0,0000134
0,134 E-4 équivalent à 0,134.10-4
𝑋 = 𝑚 × 𝑏𝑒
Où :
m est la mantisse
b est la base
e est l’exposant
b. Remarques
Soit le nombre 0.123 E-3 , nous avons :
m = 0.123
b = 10
e = -3
Dans ce genre de notation, on remarque que la mantisse respecte la règle suivante pour un nombre réel
différent de 0 :
0.1 ≤ 𝑚 < 1
a. Simple précision
Pour les nombres réels en simple précision, la représentation normalisée en complément à 2 s'effectue
sur 32 bits dont :
1 bit pour le signe
8 bits pour l’exposant
23 bits pour la mantisse
Il en résulte que l'exposant maximal représentable est 2127, soit à peu prés 1038 et que l'exposant minimal
10-38. Ces valeurs sont d'un ordre de grandeur très élevé, suffisant pour traiter la plupart des problèmes
courants.
b. Double précision
Pour les nombres réels en double précision, la représentation normalisée en complément à 2 s'effectue
sur 64 bits dont :
1 bit pour le signe
11 bits pour l’exposant
52 bits pour la mantisse
c. Généralisation
La représentation binaire V d’un nombre réel est :
𝑠
𝑉 = −1 × 2𝑒−127 × 1 + 𝐹
Où :
S : Bit de signe à 1 ou à 0
e : Exposant
F : Partie fractionnaire
0
𝑉 = −1 × 2130−127 × 1 + 0.000101 = 1.000101 × 23 = 1000.101
Résultat : 1100101
Elément Valeur
Exposant 10 + 127 = (137)10 = (10001001)2
Mantisse 01101111101100101
Signe 1
Ce qui donne :
Signe Exposant (8 bits) Mantisse (23 bits)
1 1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0
Traduction hexadécimal :
Il existe plusieurs types de codage des caractères. Historiquement, la norme ASCII (American Standard
Code for Information Interchange), utilisée pour l’échange d’informations a laissé place à la norme
UNICODE qui prend en charge la quasi-totalité des alphabets existants.
C.3. Unicode
Le codage est effectué sur 16 bits, ce qui donne 2 16 = 65536 caractères différents. Il permet de coder la
majorité des alphabets existants, sans qu’un même code puisse faire référence à plusieurs caractères
d’origines différentes.
Tous les alphabets ainsi que les codes correspondants, sont à l’adresse : http://www.unicode.org
Chapitre 5 : Annexes
A. Codes ASCII
A.1. ASCII standard
caractère code ASCII code hexadécimal
NUL (Null) 0 00
SOH (Start of heading) 1 01
STX (Start of text) 2 02
ETX (End of text) 3 03
EOT (End of transmission) 4 04
ENQ (Enquiry) 5 05
ACK (Acknowledge) 6 06
BEL (Bell) 7 07
BS (Backspace) 8 08
TAB (Tabulation horizontale) 9 09
LF (Line Feed, saut de ligne) 10 0A
VT (Vertical tabulation, tabulation verticale) 11 0B
FF (Form feed) 12 0C
CR (Carriage return, retour à la ligne) 13 0D
SO (Shift out) 14 0E
SI (Shift in) 15 0F
DLE (Data link escape) 16 10
DC1 (Device control 1) 17 11
DC2 (Device control 2) 18 12
DC3 (Device control 3) 19 13
DC4 (Device control 4) 20 14
NAK (Negative acknowledgement) 21 15
SYN (Synchronous idle) 22 16
ETB (End of transmission block, fin de bloc de transmission) 23 17
CAN (Cancel, annulation) 24 18
EM (End of medium, fin du médium) 25 19
SUB (Substitute, substitut) 26 1A
ESC (Escape, caractère d'échappement) 27 1B
FS (File separator, séparateur de fichier) 28 1C
GS (Group separator, séparateur de groupe) 29 1D
RS (Record separator, séparateur d'enregistrement) 30 1E
US (Unit separator, séparateur d'enregistrement) 31 1F
SP (Space, espace) 32 20
Touche de suppression 127 7F