You are on page 1of 57

Cours :

Architectures des Microcalculateurs


1

CHAPITRE 1 :

REPRÉSENTATION DES
DONNÉES

Kamel SMIRI
Plan
2

1. Introduction
2. Codage des données numériques
3. Codage des données non numériques
4. Conclusions
Introduction (1)
3

Les informations traitées par l’calculateur sont de


différents types :
nombres,
instructions,
images,
séquences d’images animées, sons,
etc.
Mais pour des raisons technologiques (reliées à la
réalisation de l’calculateur), elles sont toujours
représentées à la base sous forme binaire.
Introduction (2)
4

Une information élémentaire


correspond à un chiffre binaire (0 ou 1) appelé bit
(binary digit).
Une information plus complexe tels qu’une lettre,
un nombre, …
se ramène à un ensemble de bits.
Le codage d’une information revient à :
établir une correspondance entre :
la représentation externe et sa représentation interne
de l’information sous forme de suite de bits.
Exemple : lettre A 00001010
Introduction (3)
5

Pourquoi la représentation binaire ?


car elle est simple,
facile à réaliser techniquement à l'aide de bistables
(système à deux états réalisés à l'aide de transistors).
Enfin, les opérations arithmétiques de base (addition,
multiplication etc.) sont faciles à exprimer en base 2.
Pour les informations manipulées au niveau de
l’calculateur, on distingue les instructions et les
données.
Introduction (4)
6

l’calculateur manipule deux types d’informations


les instructions : Ecrites en langage machine,
elles représentent les opérations que l’calculateur
est capable d’effectuer.
et les données : Ce sont les opérandes sur lesquels
portent les instructions ou produites par celle-ci.
Exemple :
Une addition s’applique à deux opérandes
donnant un résultat qui est leur somme.
Introduction (5)
7

Plus loin dans ce cours : codage des instructions

Dans ce chapitre :
Codage des données
Numériques
Et non numériques
Codes de contrôle d’erreurs
Codage des données
numériques
8

1. Entiers positifs ou nuls


2. Entiers négatifs
3. Nombres fractionnaires
Codage des données numériques (1)
9

Avant de subir des traitements, les données vont


subir une opération de codage.
Ensuite, les opérations demandées sont effectuées,
généralement en arithmétique binaire.
Une opération de décodage (passage de la rep.
interne vers la rep. externe) est nécessaire pour les
restituer vers l’extérieur.
Codage des données numériques (2)
10

Les données numériques sont de différents types :


Nombres entiers positifs ou nul : 0, 1, 1254.
Nombres entiers négatifs :-1, -1245…
Nombres fractionnaires : 3.1457, -0.514
Nombres en notation scientifique : 1.5 107
Entiers positifs ou nuls
11

Les entiers positifs ou nuls sont codé selon des


systèmes de numération différents :
Les systèmes de numération les plus utilisés sont :
Base 2 ou binaire avec les chiffres {0, 1}.
Base 8 ou octale avec les chiffres {0,1,2,3,4,5,6,7}.
Base 10 ou décimale avec les chiffres
{0,1,2,3,4,5,6,7,8,9}.
Base 16 ou hexadécimale avec les chiffres :
{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}.
… Entiers positifs ou nuls
Les systèmes de numération (1)
12

Les entiers positifs ou nuls sont codé selon des


systèmes de numération différents :
Les systèmes de numération les plus utilisés sont :
Base 2 ou binaire avec les chiffres {0, 1}.
Base 8 ou octale avec les chiffres {0,1,2,3,4,5,6,7}.
Base 10 ou décimale avec les chiffres
{0,1,2,3,4,5,6,7,8,9}.
Base 16 ou hexadécimale avec les chiffres :
{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}.
… Entiers positifs ou nuls
Les systèmes de numération (2)
13

Les systèmes de numération font correspondre :


à un nombre N une suite de symboles.
Une base p dans un système de numération est le
nombre de symboles à utiliser dans ce système.
Dans une base p>1, les symboles 0,1, …, p-1 sont
appelés chiffres.
… Entiers positifs ou nuls
Les systèmes de numération (3)
14

Tout nombre N entier positif peut être représenté,


dans la base p, par une expression de la forme :
n n −1
N = an p + a n −1 p + ..... + a 1 p + a 0
avec ai ∈ {0 ,1 ,....., p − 1 }et a n ≠ 0
Équivalent à

La notation condensée N = anan-1an-2….a1a0


Avec :
o a0 est le chiffre des unités (de poids le plus faible).
o an a le poids le plus fort.
… Entiers positifs ou nuls
Les systèmes de numération (4)
15

Exemple :
Le nombre 21 :
En base p=10 : 21 = 2 x 101 + 1 x 100
en binaire (p=2) : 2110=101012, car :
21 = 1 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20.
D’où : 2110 = 101012.
… Entiers positifs ou nuls
Les systèmes de numération (5)
16
Décimal binaire octal Hexadécimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
… Entiers positifs ou nuls
Changement de base
17

On a vu que :
2110 = 101012.
1110 = 10112 = 138 = B10

Mais comment fait-on ces différents


changements de bases ?
… Entiers positifs ou nuls … Changement de base
Passage de la base 10 vers une base p (1)
18

Soit un nombre entier N représenté dans la base 10.


On effectue des opérations de division euclidienne
successive de ce nombre par la base p jusqu’à
l’obtention d’un quotient nul.

Le nombre est obtenu en base p en lisant les


restes du dernier vers le premier
et en écrivant de gauche à droite.
… Entiers positifs ou nuls … Changement de base
Passage de la base 10 vers une base p (2)
19

convertir 44 de la base 10 vers la base 2


44 2

Reste 1= 0
Q1=22 2

0
11 2 (44)10 = (101100)2
1
5 2

1
2 2

0
1 2

Reste n=1 Qn = 0 alors on arrête les itérations


… Entiers positifs ou nuls … Changement de base
Passage d’une base p vers la base 10
20
La conversion se fait en additionnant les puissances de
p.
N p = (anan−1......a1a0 ) p = an pn + an−1 pn−1 + .....+ a1 p + a0 = N10
les ai sont les symboles entre 0 et p-1
Les pi sont les poids des symboles ai.

Exemple :
( AE ) 16 = 10 × 16 1 + 14 × 16 0 = (174 ) 10
( 0101 ) 2 = 2 2 + 2 0 = ( 5 ) 10
… Entiers positifs ou nuls … Changement de base
Passage de la base 8 ou 16 vers la base 2
21

La conversion correspond à l’éclatement de chaque


chiffre octal (respectivement hexadécimal) en son
équivalant binaire sur 3 (respectivement 4) bits.

Exemple :
(6F5)16 = (0110 1111 0101)2
(135)8 = (001 011 101)2
… Entiers positifs ou nuls … Changement de base
Passage de la base 2 vers la base 8 ou 16
22

La conversion revient à effectuer un remplacement,


de droite à gauche, de 3 (respectivement 4) bits par
le chiffre octal (respectivement hexadécimal)
correspondant.

Exemple :
(0110 1111 0101)2 = (6F5)16
(01 011 101)2 = (135)8
… Entiers positifs ou nuls … Changement de base
Passage de la base 8 à la base 16
23

Pour passer de la base octale à la base hexadécimale


ou inversement,

il suffit d’utiliser la base décimale ou binaire


comme base intermédiaire.
… Entiers positifs ou nuls
Addition dans une base p (1)
24

Addition binaire :
Table d’addition élémentaire:
0+0=0
Exemple :
0+1=1
1+0=1 9 1001
+ +
1+1=0 5 0101
avec une retenu de 1. ------- ------------
14 1110
… Entiers positifs ou nuls
Addition dans une base p (2)
25

Addition octale ou hexadécimale : Les


opérations d’addition s'effectuent en base quelconque p
avec les mêmes méthodes qu'en base 10. Une retenue
lorsque l'on atteint ou dépasse la valeur p de la base.

Exemple p=8: Exemple p=16:


(12)8 1010 (A)16 1010
+ + + +
(7)8 111 (7)16 111
------- ------------ ------- ------------
(21)8 10001 (11)16 10001
… Entiers positifs ou nuls
Dépassement de capacité (1)
26
Au niveau de l’calculateur, on représente les nombres
entiers positifs par un nombre fixe de bits (d’où
l’appellation : représentation en champs fixes).

Si N est le nombre de bits utilisés au niveau de l’calculateur


pour représenter les nombres alors seuls, les nombres Nbr
tel que 0 ≤ Nbr <2N peuvent être représentés.

Cela peut introduire des problèmes au niveau des


opérations arithmétiques. En effet, une addition peut
donner un résultat dépassant la valeur maximale possible.
… Entiers positifs ou nuls
Dépassement de capacité (2)
27

Exemple : addition binaire sur 4 bits

La valeur obtenue ne peut pas être représentée


111111 1 sur 4 bits, on parle de débordement ou de
dépassement de capacité (Overflow).
+ Quand un débordement se produit, un
0101 indicateur est mis à 1.
------------
Dans certains calculateurs, les calculs
10100
continuent, dans d’autres, le traitement s’arrête.
Dans les deux cas, le problème est signalé.
Entiers négatifs
28

Un entier est représenté en mémoire en écrivant ses


bits de poids faible de la droite vers la gauche des
cases de la mémoire en complétant à gauche par des
zéros s’il le faut.
Les entiers négatifs peuvent être codés avec l’une des
trois méthodes :
Signe et valeur absolue ;
Complément à 1 ;
Complément à 2.
… Entiers négatifs
Signe et valeur absolue (1)
29

Les nombres sont codés de la façon suivante :


+/-valeur absolue
On sacrifie un bit pour représenter le signe.
Normalement 0 est le signe positif,
1 est le signe négatif.
Ainsi, avec k bits, on peut coder des entiers
positifs et négatifs tel que :

-(2k – 1 – 1) ≤ N ≤ +(2k – 1 - 1).


… Entiers négatifs
Signe et valeur absolue (2)
30

• Cette méthode a les inconvénients suivants :


o 0 a deux représentations 0000000 et
1000000 (k=7).
o Les tables de multiplication et d’addition sont
compliquées à cause du bit de signe qui doit
être traité à part.
Pour cela on préfère la complémentation.
… Entiers négatifs
Signe et valeur absolue (3)
31
• Exemples :
0111
7 +
+ 1101
-5 ------------
------- 0010
2
-8 11000
+ +
6 00110
------- ------------
- 2 10010
… Entiers négatifs
Complément logique (1)
32

• On calcule le complément logique (ou complément


à 1) en remplaçant pour les valeurs négatives,
chaque bit à 0 par 1 et vice versa.
• Pour représenter un nombre négatif, on représente
sa valeur absolue en binaire puis on détermine son
complément à 1.
• Il y a toujours un bit consacré pour le signe et le
nombre négatif se voit toujours accordé un 1 dans
son dernier bit à gauche.
• Avec k bits, on peut coder des entiers positifs et
négatifs tel que :
-(2k – 1 – 1) ≤ N ≤ +(2k – 1 - 1)
… Entiers négatifs
Complément logique (2)
33

Cette méthode a l’inconvénient suivant :


0 a deux représentations :
0000000 et 1111111 (k=7)
☺ Mais elle a l’avantage suivant :
☺ L’addition devient simple.
☺ En effet, si une retenue est générée par le bit de
signe alors elle doit être ajoutée au résultat
obtenu.
… Entiers négatifs
Complément logique (3)
34

• Exemples -6 <0 | -6 | = 6
sur 4 bits :
Représentation
en base 2 sur 4
Opération bits
Représentation
complément à
complément à 1 de -6 0110
1
=
1001
Représentation
complément à 1 de 7
=
7≥0 Représentation en base 2
sur 4 bits
=
0111
… Entiers négatifs
Complément logique (4)
35

• Suite +7 1 01111 1
exemple :
+ +
-6 1001
------- ------------
1 0000
+
1
-----------
0001
… Entiers négatifs
Complément arithmétique (1)
36

• On obtient le complément arithmétique (ou


complément à 2) d’un nombre en remplaçant
chaque bit par son complément à 1 puis on ajoute 1
au résultat obtenu.
• On représente un nombre négatif en considérant sa
valeur absolue et en la représentant en
complément à 2 (y compris le bit de signe).
• Sur k bits on peut représenter :
-2k – 1 ≤ N ≤ 2k – 1 - 1.
Exemple : sur 4 bits on représente de -8 à 7
en complément à 2 (1000 à 0111)
… Entiers négatifs
Complément arithmétique (2)
37
• Exemples
sur 4 bits : Représentation
-7 <0 | -7 | = 7 en base 2 sur 4 0111
bits Opération
complément à 1

Représentation +1 Représentation
complément à 2 de -7 complément à 1 de -7
= 1001 = 1000

Représentation complément à 2 de 7
=
7≥0 Représentation en base 2 sur 4 bits
=
0111
… Entiers négatifs
Complément arithmétique (3)
38
• Suite exemple :

+7 1 0111
+ +
-7 1001
------- ------------
0 0000
… Entiers négatifs
Complément arithmétique (4)
39
☺ Cette méthode a les avantages suivants :
☺ Une seule représentation pour 0.
☺ Les additions deviennent de plus en plus
simples : si une retenue est engendrée au niveau
du bit le plus à gauche, elle est ignorée.
☺ Le bit de poids fort d’un nombre négatif est
toujours 1 même en complément à 2.
Les nombres fractionnaires
40
• Les nombres fractionnaires sont les nombres qui
comportent une partie décimale (après la virgule)
non nulle.
• Dans la machine, tout nombre est codé avec un
nombre fini de chiffres ; il n’est pas possible de
représenter tous les rationnels, et à fortiori tous les
réels.
… Les nombres fractionnaires
Changement de base : d’une base p à la base 10
41
• Pour la partie purement fractionnaire, le passage se
fait par l’addition de puissances négatives de p.

N p = ( a n a n −1 ...... a 1 a 0 , a −1 a − 2 .. a − m ) p =
n −1 −m
a n p + ... + a1 p + a 0 + a −1 p + ... + a − m p
• Exemple :
(1.01)2 = 1 x 20 + 0 x 2-1 + 1 x 2-2 = (1.25)10
… Les nombres fractionnaires
Changement de base : de la base 10 à une base p (1)
42
• La conversion se fait par des multiplications
successives par la base des nombres purement
fractionnaires.
Arrêt :
si on obtient une partie fractionnaire nulle
ou bien quand le nombre de bits obtenus
correspond à la taille de la mémoire.
Le nombre, correspondant à la partie fractionnaire,
s’obtient en lisant les parties entières de la première
vers la dernière obtenue et en écrivant de gauche à
droite après la virgule.
… Les nombres fractionnaires
Changement de base : de la base 10 à une base p (2)
43
• Exemple : (12.2)10= ( ?)2
On prend la partie fractionnaire.

0.2 x 2 = 0.4 = 0 + 0.4


0.4 x 2 = 0.8 = 0 + 0.8
0.8 x 2 = 1.6 = 1 + 0.6
0.6 x 2 = 1 .2 = 1 + 0.2
0.2 x 2 = … boucle

(12.2)10 = (1100.0011…0011)2
… Les nombres fractionnaires
Représentation en virgule fixe
44
• Utilisée par les premières machines
• chaque nombre est séparé en deux parties :
• les chiffres avant
• et les chiffres après la virgule.
• Les calculateurs n’ont pas de virgule
virgule virtuelle gérée par le programmeur.
• Ce dernier doit donc connaître et faire évoluer, au
cours des opérations la place de la virgule
de façon à conserver le maximum de chiffres
significatifs.
… Les nombres fractionnaires
Représentation en virgule flottante (1)
45

var x : real ; en pascal


float x ; en C

la valeur de x sera codée sous la forme :


signe * valeur * 2exposant
… Les nombres fractionnaires
Représentation en virgule flottante (2)
46
Principe :
1. convertir x en binaire (méthode virgule fixe)
2. le champ valeur est déterminé par normalisation, c'est-à-
dire, amener le 1 de poids le plus fort juste avant ou après
la virgule, on aura alors des nombres de la forme 1,… ou
0.1… d’où on ne représentera pas le 1 est la virgule et on
gagne un bit (hidden bit= bit caché)
3. l’exposant est représenté sous forme biaisée.
Exposant=Eint – biais
Avec : Eint : représentation interne de l’exposant
Biais = 2 (bnre bits exposant -1)
Eint=exposant + biais
Exemple : exposant=-3 sur 4 bits
Eint=exposant + biais = -3 + 23=5
… Les nombres fractionnaires
Représentation en virgule flottante (3)
47
Exemple de représentation flottante : Norme
IEEE 754
Chaque calculateur avait sa propre représentation des
nombres en virgule flottante
besoin d’un standard.
la Norme IEEE 754 (Institute of Electrical and
Electronics Engineers) qui offre les deux représentations:
short real : sur 32 bits (simple précision)
long real : sur 64 bits (double précision)
NB : il y a aussi la précision étendue sur 80 bits (pour
réduire les erreurs d’arrondis)
… Les nombres fractionnaires
Représentation en virgule flottante (4)
48
La Norme IEEE 754 consiste à représenter les nombres sous
la forme :
N = (signe) M * BE
Avec: m : mantisse
B : base (2, 8, 10, 16…)
E : exposant
signe Eb M

signe de la Exposant biaisé (rep. Mantisse :


mantisse : interne de l’exposant): 23 bits : simple précision
1 bit 8 bits : simple précision 52 bits : double précision
11 bits : double précision
… Les nombres fractionnaires
Représentation en virgule flottante (5)
49
En simple précision :
La mantisse est normalisée
L’exposant est un entier sans signe mais biaisé de 127 (E =
Eb – 127 ). Avec : -126 < E < 127.
La valeur du nombre codé se lit (-1)signe * 2 (Eb -127) * 1,M
l’exposant 00000000 signifie que le nombre est
dénormalisé.
l’exposant maximum est 127 et non pas 128 qui est réservé
pour des configurations spéciales
0 1111 1111 000…000 = + ∞
1 1111 1111 000…000 = - ∞
On note cette configuration NaN, Not a Number et on l’utilise pour
signaler des erreurs (exemple : division par 0)
… Les nombres fractionnaires
Représentation en virgule flottante (6)
50
En double précision :
La mantisse est normalisée
L’exposant est un entier sans signe mais biaisé de 1023 ( E =
Eb – 1023 ).
La valeur du nombre codé se lit (-1)signe * 2 (Eb -1023) * 1,M
… Les nombres fractionnaires
Représentation en virgule flottante (7)
51
Exemple :
Coder le nombre décimal 2.5 en flottant de type short
ensuite en flottant de type long selon la norme IEEE 754
(2.5)10=(10.1)2=1.01 * 21
En simple précision
Eb = 127+1=128
signe 0 ; Eb = 1(0000000) 7 zéros et M= 01(0…0)32-11=21 zéros
En double précision
Eb = 1023+1=1024
signe 0 ; Eb = 1(0000000000) 10 zéros
et M= 01(0…0)64-14=50 zéros
… Les nombres fractionnaires
Représentation en virgule flottante (8)
52
Dans la représentation en virgule flottante:
Le nombre de bits réservé pour la mantisse détermine
la précision de codage.
Le nombre de bits réservé pour l’exposant (qui est un
entier relatif) détermine la gamme des ordres de
grandeurs représentables.
Codage des données non
numériques
53

1. Codage des caractères


2. Code ASCII
Codage des caractères
54

Le codage des caractères est fait par une table


de correspondance indiquant la configuration
binaire représentant chaque caractère.
Les deux codes les plus connus sont :
l’EBCDIC (Extended Binary Coded Decimal
Interchange Code) : en voie de disparition
et le code ASCII (American Standard Code for
Information Interchange).
…Codage des caractères
Code ASCII (1)
55
Le code ASCII représente chaque caractère sur
7 bits
on parle parfois de code ASCII étendu, utilisant
8 bits pour coder des caractères
supplémentaires.
Le code ASCII original (défini pour les besoins
de l’informatique en langue anglaise) ne permet
la représentation des caractère accentués (é, è,
à, ù, ...), et encore moins des caractères chinois
ou arabes.
Pour ces langues, d’autres codages existent,
utilisant 16 bits par caractères.
…Codage des caractères
Code ASCII (2)
56
Les codes compris entre 0 et 31 ne représentent pas des
caractères, ils ne sont pas affichables. Ces codes, souvent
nommés caractères de contrôles sont utilisés pour
indiquer des actions comme passer à la ligne (CR, LF),
émettre un bip sonore (BEL), etc.
Les lettres se suivent dans l’ordre alphabétique (codes 65
à 90 pour les majuscules, 97 à 122 pour les minuscules),
ce qui simplifie les comparaisons.
On passe des majuscules aux minuscules en modifiant le
6ième bit, ce qui revient à ajouter 32 au code ASCII
décimal.
Les chiffres sont rangés dans l’ordre croissant (codes 48
à 57), et les 4 bits de poids faibles définissent la valeur en
binaire du chiffre.
Conclusions
57

Ce chapitre nous a servi à expliciter comment


les données numériques et non numériques
sont codés pour être représentées dans
l’calculateur.
Le chapitre suivant répondra à des questions
telles que :
Où est-ce que ces données sont-elles stockées ?
Quelles sont les technologies utilisées ?
Quelles sont les capacités de stockage ?

You might also like