Vous êtes sur la page 1sur 10

REPRÉSENTATION (CODAGE) DE L’INFORMATION

INTRODUCTION

Les informations traitées par l’ordinateur sont de différents types (textes, sons,
nombres, images…), mais elles sont toujours présentées à la base, sous forme binaire.
Une information élémentaire correspond donc à un chiffre (0 ou 1), appelé bit (vient de
BInary digiT). Une information plus complexe, comme un nombre ou un caractère,
correspond à un ensemble de bits. (exemple : 7 correspond à 111, B correspond à 1000010)
Le codage d’une information consiste à établir une correspondance entre sa
représentation externe (externe par rapport à la machine, une représentation comprise par
l’homme) et sa représentation interne (propre à la machine, une suite de bits).

I. SYSTÈME DE NUMÉRATION

Au départ, l’homme voulait faire fonctionner l’ordinateur en système décimal (à 10


symboles, de 0 à 9). Cependant, les phénomènes électriques, à la base du fonctionnement de
l’ordinateur, ne présentent que deux états stables : absence de tension = 0 V, et présence de
tension = 5 V. Ainsi, le système binaire convenait donc à la représentation d’un tel
phénomène : 0 V correspond à 0, et 5 V correspondent à 1.
L’avantage de la représentation binaire est qu’elle est simple, et facile à réaliser
techniquement, à l’aide des bistables (composants électriques à 2 états stables, ou d’équilibre) ;
de plus, les opérations arithmétiques de base sont faciles à exprimer en binaire, et
relativement simples à réaliser sous forme de circuits logiques. Par contre, l’inconvénient du
binaire est qu’il est difficilement assimilable par l’homme, et par conséquent, ce dernier utilise
d’autres systèmes de numération, comme le décimal, l’octal, l’hexadécimal. Il est donc
nécessaire de savoir passer d’un système à l’autre.
L’information traitée par l’ordinateur est soit une donnée, soit une instruction. Elle est
toujours codée (en binaire).

II. LES INSTRUCTIONS

En langage machine, les instructions représentent les opérations (addition,


déplacement, incrémentation, décalage…) effectuées par l’ordinateur. Une instruction est
composée d’un code opération et d’opérandes. Elle est donc à plusieurs champs :

o le champ du code opération à effectuer ;


o le champ du code opérande de l’opération, qui contient la donnée ou la
référence à une donnée en mémoire.

Archi –Représentation (codage) de l’information 1


Selon la manière dont l’opérande est spécifié (mode d’adressage), une instruction sera
codée sur 1, 2, 3 ou 4 octets. Le code doit subir un décodage avant exécution de l’instruction.
exemple : B8 1F correspond à un déplacement (move AX, 1F : charger 31 dans
l’accumulateur).
De même, 05 19 correspond à (add AX, 19 : ajoute 25 au contenu de AX, l’accumulateur)

Exemple de programme stocké à l’adresse 0100h (signifie 0100 en hexadécimal)

A1 01 10 03 06 01 12 A3 01 14

Ce programme additionne (A1) le contenu de deux cases mémoire et range le résultat


dans une troisième. Pour être exécuté, il est représenté en binaire, puis décodé.

III. LES DONNÉES

Les données sont les opérandes sur lesquels portent les opérations (traitements), ou
produits par celles-ci. On distingue deux types de données : les données numériques et les
données non-numériques.

1. Les données non-numériques

Ce sont les caractères alphanumériques (A, B, C, …, Y, Z, a, b, c, …, y, z, 0, 1, … 9), les


caractères spéciaux, et les ponctuations. Le codage de ce type de données se fait par des tables
de correspondance propres à chaque code, dont les plus connues sont :

o BCD (Binary Coded Decimal) : Il code un caractère sur 6 bits.


o EBCDIC (Extended Binary Coded Decimal Internal Code) : Sur 8 bits.
o ASCII (American Standard Code for Information Interchange): Sur 7 bits et 8
bits pour la version étendue, qui permet de coder des caractères supplémentaires.

Il existe d’autres codes, sur 16 bits, permettant de coder tous les caractères qui
puissent exister. (exemples : UNICODE, UTF-16 etc.)

exemple :

Caractère BCD EBCDIC ASCII


‘0’ 000000 11110000 0110000
‘9’ 001001 11111001 0111001
‘A’ 010001 11000001 1000001

Remarque :
Pour l’ASCII :
 Entre 0 et 31, les codes ne représentent pas de caractère, ils ne sont pas affichables. ce
sont des caractères de contrôle pour la gestion interne de l’ordinateur (aller à la ligne :
CR = 13), Bip sonore (BEL = 07).
 De 65 (A) à 90 (Z), les LETTRES MAJUSCULES (41 – 5A en hexadécimal)

Archi –Représentation (codage) de l’information 2


 De 97 (a) à 122 (z), les lettres minuscules (61 – 7A, soit +20 en hexadécimal)
On passe d’une série à l’autre en inversant le bit 5 du code binaire. Cela revient à ajouter ou à
soustraire 32 au code décimal, ou encore 20 au code hexadécimal.

 Les codes 48 – 57 (30h – 39h) correspondent aux chiffres (0 – 9), et le chiffre de poids
faible (en hexadécimal, 30 = 0, … 39 = 9) définit la valeur du chiffre en décimal. Les 4 bits
de poids faible du code binaire définissent donc la valeur en binaire du chiffre.
NB : L’opération qui permet de passer d’un code à un autre est le transcodage.
2. Les données numériques

On y distingue les nombres entiers naturels, entiers relatifs (signés), réels.


Le codage est réalisé à l’aide de l’algorithme de conversion associé au type de données.
Les opérations arithmétiques appliquées aux données sont effectuées en arithmétique
binaire :
0 + 0 = 0 ; 0 + 1 = 1 ; 1 + 0 = 1 ; 1 + 1 = 0 et 1 de retenue.
0 * 0 = 0 ; 0 * 1 =0 ; 1 * 0 = 0 ; 1 * 1 = 1.

Remarque : Lorsque dans une base b le résultat d’une opération est supérieur ou égal à b, la
différence avec le plus grand multiple de la base inférieur au résultat est écrite, et le reste en
multiple de la base est avancé comme retenue au rang supérieur.

exemple : b = 10 : 2 * 8 = 6 (1 de retenue) = 16 ;


b = 8 : 3 * 5 = 7 (1 de retenue) = 17 ;
b = 16 : 4 * 9 = 4 (2 de retenue) = 24 ;
04/10/16

a) Les entiers naturels (entiers positifs ou nuls)

Ce sont les nombres 0, 1, 2, … N, N+1.


Un système de numération fait correspondre à l’entier N, un certain
symbolisme. Dans un système de base b > 1, les nombres 0, 1, 2, …, b-1 sont les chiffres
ou digits. Tout nombre N >= 0 est donné dans la base b par la notation polynomiale
n
i
N = anbn + an-1bn-1 + … + aibi + … + a1b + a0 = ∑ a b
i=0

En notation condensée on a ou (anan-1…a1a0)b.

Changement de base
o Base b → décimal : on additionne les puissances de la base affectées de leur
coefficient.
Exemples :
- b=2 : 1011012 = 25+23+22+20 = (45)10
- b = 8 : 2538 = 2x82+5x81+2 = 17110
- b = 16 : 1BACD16 = 1.164+11.163+10.162+12.16+13 = 113 35710
o Décimal → base b :
L’une de trois méthodes peut être utilisée :

Archi –Représentation (codage) de l’information 3


 Par divisions successives de l’entier par b ; le résultat est le nombre constitué par
l’ensemble des restes pris du dernier au premier.
Exemples : Convertir 54 en binaire et 950 en hexadécimal.
Ex : 54 :2 = 27 : 2 = 13 : 2 = 6 : 2 = 3 : 2 = 1 : 2 = 0
0 1 1 0 1 1 d’où le résultat 27 = 1101102
950 : 16 = 59 : 16 = 3 : 16 = 0
6 B 3 d’où le résultat 950 = 3B616
 par dichotomies : on divise le nombre par 2, en lui enlevant 1ou 0 au préalable
selon qu’il est pair ou impair et à la fin on prend les 1 et 0 retranchés en
remontant.
Ex : 54 -0 = 54 : 2 = 27
27 - 1 = 26 : 2 = 13
13 – 1 =12 : 2 = 6
6 - 0 = 6 : 2 = 3
3 - 1 = 2 : 2 = 1
1–1=0 d’où le résultat : 110110
 Pa soustractions successives : On soustrait successivement la puissance de b la
plus proche et inférieur au nombre considéré jusqu’à 0 et l’on obtient ainsi la
notation polynomiale du nombre dans b.
Ex : 45 – 32 = 13 ; 13 – 8 = 5 ; 5 – 4 = 1 – 1 = 0
25 23 22 20 D’où 45 = 1.25 + 0.22 + 1.23 + 1.22 + 0.21 + 1.20

o Conversion octal/hexadécimal → binaire : on éclate chaque chiffre


octal/hexadécimal en son équivalent binaire sur 3/4 bits à partir de la droite.
Exemple : 628 = 110 0102 CAF = 1100 1010 11112

o Binaire → octal/hexadécimal : On effectue, de droite à gauche, un remplacement de


3/4 bits par le chiffre octal/hexadécimal correspondant. On complète à gauche avec
des 0 si le nombre de bits n’est pas un multiple de 3/4.

Exemple : 11001012 = 1458 = 6516

b) Représentation des entiers signés

Ceux-ci peuvent être codés de 3 façons :


o En signe et valeur absolue (SVA)
o Le complément à 1 (Cb-1) ou complément restreint ou encore logique.
o En complément à 2 (Cb), complément vrai ou arithmétique.

Dans un registre ou emplacement mémoire à n positions, tout entier signé est codé
comme suit : la position de poids fort code le signe et le reste de positions permet de
coder la valeur du nombre.
Note : Tout entier positif est toujours codé par conversion direct dans la base considéré
quelque soit la méthode.

Archi –Représentation (codage) de l’information 4


Signe et valeur absolue :
Dans cette méthode, un entier est représenté comme suit :
Après le code du signe, suit la valeur absolue du nombre.

Exemple : Codez sur 8 bits les nombres -32, -17, et 511 en SVA :
-32 < 0 ⟹ MSB (Most Significant Bit) = 1, et |-32| = 32 = 25 = 100000
Donc, -32 = 101000002

-17 < 0 ⟹ MSB = 1 ; et |-17| = 17 = 10001 ; Donc -17 = 100100012


511> 0 ⟹ MSB=0 ; et |260| = 28 – 4 = 1111 11002! Ce qui est faux car ceci est la
représentation d’un entier négative, puis que son MSB est 1.

NB : En SVA, pour n bits, on ne peut coder que l’entier signé N / -(2 n-1-1) ≤N ≤ +2n-1 – 1 ;
Ainsi dans le cas ci-dessus, on ne peut représenter que les entiers de -255=-(27-1) à 255=27-1

 Le complément restreint/logique/à b-1(Cb-1) :

Pour les entiers N négatifs, le complément logique se fait par inversion de chaque
chiffre de |N| écrit dans la base considérée sur n digits : l’inverse de x dans la base b étant (b-
1)-x.
On peut également, sur n positions, faire bn-( |N|+1) et convertir le résultat dans b.

Exemples :
①Coder +12, -17 et -32 en C1 sur 8 bits

Solution : +12 = 11002 d’où la représentation 00001100(conversion directe);


|-32| = 001000002 et en C1 -32 = 11011111(inversion des chiffres)
On pouvait aussi donner la configuration binaire de 28 – (|-32|+1)=22310 ce qui donne
110111112 ce qui donne le même résultat que ci-dessus.
 -17 = 11101110 en C1?
②Coder -32, +28 en C7 sur 4 positions
Remarque : Il s’agit de la représentation en complément restreint dans la base 8

Solution : +28 = 111002 → 00348 on a donc +28 = 0034 en C7


-32 : 3210 = 00408 par inversion on a 7777 – 0040 = 7737 d’où la
représentation -3210 = 77378

③Coder -32, +45 en C15 sur 3 positions

Solution : +4510 = 02D16 → +45= 02D en (C15)


-3210 = FFF - 020 → FDF16

NB : En Cb-1, sur n positions on ne peut coder que les entiers relatifs N, tels que
-( (bn/2) - 1) ≤ N ≤+ ((bn/2) - 1)

TAF : -129 est-il représentable sur 2 digits en C15?

Archi –Représentation (codage) de l’information 5


 Complément vrai (Cb)
C’est le complément à la base. Il code un entier négatif en ajoutant 1 à son complément
logique, on peut également calculer bn – N, où N est le nombre à représenter, et
représenter le résultat sur n positions. C2 = C1 + 1 = Cb-1 + 1

exemple :
Coder +12, -17, -32 en C2
Solution : +12 → 00001100 (C2)
-32 → 11011111 (C1) → 11100000 (C2)

NB : En Cb, sur n digits on ne peut coder que les entiers relatifs N, tels que
-(bn/2)≤ N ≤ (bn/2) – 1

11/10/2016
b
NB : Tout nombre codé en Cb-1 ou en Cb est négatif si le digit de poids fort ≥ et il est positif
2
sinon.
L’extension se fait avec F ou 0 selon le cas.

Exercice : -2325 en C1 (abus de langage pour C15), en C2 (abus de langage pour C16) et en
hexadécimal, n = 4.

6EAC1 / 6EBC2 overflow : ce nombre n’est pas codable sur 3 positions, car on obtient le
code d’un nombre positif (bit de poids fort = 6 < 8) .
En revanche, sur 4 et 6 positions, on a FFFF – 0915 = F6EAC15 +1 → F6EBC16;
Sur 6 digits par extension on FFF6EA et FFF6EB : sinon faire FFFFF – 000915.

-128 sur 8 bits en C1 → impossible, car sur 8 bits on ne peut représenter que les entiers allant de
-127 à +127, et -128 n’appartient pas à cet intervalle. (-127

-128 sur 8 bits en C2 → On pourrait penser que c’est impossible, puisque le C 1 l’est ; pourtant -128
appartient à l’intervalle des nombres codables en C2 sur 8 bits [ -128, 127 ].
Pour coder -128 en C2, comme il n’est pas représentable en C1,
soit fait -128= -127 + (-1) et l’on code en C1 puis on passe en C2 ,( -127=10000001 et -1= 11111111
C2; ( la retenue de l’addition est ignorée))
soit on code normalement 28 – | -128| = 12810 = 28 = 10000000 en C2.

c) Décodage des entiers relatifs.

 Conversion SVA → décimale


On note le signe donné par le MSB et l’on convertit en décimale le reste des n-1 bits ce
qui la valeur absolue du nombre au quelle on ajoute le signe.
Exemple : Donner la valeur décimale du l’entier signé dont le code SVA est 10111.
Solution : Le MSB = 1 ⟹ N<0 et |N|= 0111 soit 7 d’où N = -7

 Conversion complément → décimale

Archi –Représentation (codage) de l’information 6


Pour retrouver la valeur décimale d’un nombre signé dont la représentation est
donnée en Cb ou Cb-1, on note son signe et l’on procède exactement de la même façon que si
l’on codait le nombre en Cb-1 ou en Cb, ce qui donne la valeur absolue du nombre dans la base b,
que l’on convertit en base 10, puis on ajoute le signe.

Exemple : Donner la valeur décimale du nombre signé dont la représentation en C15 est
8B1 en hexadécimal ; même question pour 5EA en C16.
Solution :
8B1 : N < 0 car 8 ≥ 16/2
8B1 → 74E (inversion) = |N| en hexa et en décimal |N| = 1870 d’où N = -1870.

5EA : N > 0 (5<8)


5EA → A15 = |N| ; en décimal on a : |N| = 10*162+1*16+5 = 2581 d’où N = +2581.
Remarques :
o Les inconvénients de la méthode SVA sont :
- Deux représentations distinctes pour 0 (+0 et -0)
- Tables d’addition et de multiplication compliquées à cause du bit de signe à
traiter à part.
o Les opérations arithmétiques en complémentation sont avantageuses, car la
soustraction se réduit à l’addition du complément.
Dans une addition en Cb-1, la retenue générée par le digit de signe est ajoutée au
résultat, alors qu’en Cb, elle est ignorée.
Exemple : Calculer :
- en Cb-1, 32 – 30 en binaire (8 bits), octal et hexadécimal (4 positions)
- en Cb, 32 – 30 en binaire, octal, hexadécimal sur 8 bits et 4digits.

Solution : Posons 32-30 = 32 + (-30)= 2

En complément restreint (Cb-1)


binaire : 32 = 00100000
+
-30 = 11100001
_____________________________
① 00000001
+1
____________________
00000010 soit 2 résultat attendu.

octal : 32 = 0040
-30 = 7741Cb-1 somme → ① 0001 → + 1 → 0002

hexadécimal : 32 = 0020
-30 = FFE1 somme → ① 0001 → + 1 → 0002

En complément à la base(Cb) idem, retenues rejetées.

Archi –Représentation (codage) de l’information 7


binaire : 32 = 00100000
+
-30 = 11100010
_____________________________
① 00000010
____________________
00000010 soit 2 résultat attendu (la retenue est ignorée)

octal : 32 = 0040
-30 = 7742C8 somme → ① 0002 soit 2.

hexadécimal : 32 = 0020
-30 = FFE2 somme → ① 0002

En Cb, il y a overflow lorsque les retenues générées par le chiffre du signe et celui juste
avant sont différentes. Le résultat est plus grand que l’opérande de destination.

Exemple : Calculer sur 3 bits - 3 – 1, et -4 – 1, puis 10000000 + 11111110 sur 8 bits

Solution :
-3 = 101C2 ; -1 = 111 ; somme = 100 (on omet la retenue) : dernière et avant-dernière
retenue égales ( = 1 ) donc il n’y a pas overflow.

-4 = 100C2  ; -1 = 111 ; somme = 011 ; il y a overflow (retenues différentes)

10000000 + 11111110  = 01111110 ; il y a overflow, car les retenues du bit 6 (retenue =


0) et du bit 7 (retenue = 1) sont différentes.

On dit aussi qu’il y a overflow lorsque le résultat signé d’une opération est incorrecte :
comme la somme de deux entiers signés de même signe qui donne un résultat de signe
contraire (cas de -4 – 1 = 011 > 0).

Nota : retenue et débordement pour une représentation sur n bits.


- Quand Il y a retenue (carry ou borrow), le résultat n’est pas nécessairement erroné, il suffit
d’ignorer la retenue ; ex : -2-4=1111 1110 + 1111 1100= ① 1111 1010 (-6) juste.
- Quand il y a overflow le résultat est faux nonobstant un éventuel report ; ex : 65+65=0100
0000+ 01000001= (-127) faux.

d) Représentation des nombres réels

Pour les réels, il existe la virgule fixe, et la virgule flottante.


 La virgule fixe
( à chercher)
 Représentation des nombres à virgule flottante

Archi –Représentation (codage) de l’information 8


Elle consiste à représenter les nombres sous la forme N = M. BE, où
o B est la Base,
o M la Mantisse,
o E l’Exposant effectif.
L’exposant est un entier relatif et la mantisse, un nombre fractionnaire, normalisé (le premier
chiffre avant la virgule est égal à 1). M est codé selon l’une des trois méthodes, SVA, Cb-1, et Cb.

Le nombre en binaire est représenté comme suit :


sm (signe de la e (exposant m (mantisse)
mantisse) biaisé)

Si e est codé sur k bits, alors le biais = 2k-1 - 1 et l’exposant effectif est E = e – biais.
Exemple : Coder 3,5 sur 8 bits avec e codé sur 3 bits et m sur 4 bits.

N = 3,5 = 011,12
= 0,111 x 22
= M BE

Or e = E + biais
biais = 23-1-1 = 3
donc, e = 2 + 3 = 5 = 101 ! (overflow ; il faut 4bits pour coder 5 qui serait alors 0101)
sm ? N > 0 ⟹ sm = 0 ; d’où la représentation 00101111

Dans la norme IEE 754, les nombres réels à virgule flottante se représentent comme suit :

s e f
(signe) (exposant (partie
) fractionnaire)

biais = 2n-1 – 1 ; n = nombre de bits de l’exposant

Les mots mémoire des processeurs actuels étant de 32 et 64 bits, la représentation en simple
précision se fait sur 32 bits, et double précision sur 64 bits. On a le tableau suivant :

Type Nombre Taille s Taille e Taille f Emin / Emax Précision


de bits
Réel court 32 1 8 23 -126 / +127 simple
Réel long 64 1 11 52 -1022 / +1023 double
Réel étendu 80 1 16 63 - Double ét
16382/+16383

Exercice : Représenter N = +125,5 et N = -75,875 en IEE 754 simple précision.

Solution :
+125,5 = 1111101,1 = 1,1111011 x 26
Archi –Représentation (codage) de l’information 9
s = 0 car N > 0; exposant = 127 + 6 = 133 = 10000101 ; mantisse = 1111011
N = 010000101111101100000000000000

-75,875 = ?
75,875 = 1001011,111 = 1,001011111 x 26
signe = 1 car N < 0 ; exposant = 127 + 6 = 133 = 10000101 ; mantisse =
001011111
N = 11000010100101111100000000000000

Exercice : Retrouver le nombre décimal dont la représentation suivant la norme IEEE 754 en
simple précision est 11001011110110…0

Solution

s = 1 ⟹ N < 0;
e = 10010111 = 150 ⟹ E = 150 – 127 = 23;
f = 10110…0 = 1011 ; la représentation étant à bit perdu f est la partie fractionnaire de la
mantisse, on M=1,f) :
d’où |N|= 1,f x 2E = 1,1011 x 223 = 1,6875 x 223
= 14 155 776
⟹ N = -14 155 776 = -1,4155776 x 107

Note:
o 0 est codé par m et e nuls, il est non normalisée.
o Un exposant nul indique, soit une valeur nulle (si la mantisse est égale à 0), soit une très
petite valeur.
o Un exposant composé que du plus grand chiffre de la base indique soit la représentation
d’une valeur infinie (positive ou négative), soit celle d’aucun nombre non valide, un
NaN(Not a Number) ; il peut être utilisé pour se rappeler qu’une variable n’a pas été
initialisée, ou pour signaler des erreurs de calculs, comme la division par zéro à
l’appréciation de l’utilisateur.
Exercice : Retrouver les valeurs Emin et Emax du tableau ci-dessus.

Archi –Représentation (codage) de l’information 10