Ch 4 La représentation des nombres

publicité
Chapitre 4b
La représentation
des nombres
1
Chapitre 4 : La représentation des nombres
Introduction
 1 - Notion de mot
 2 – La représentation des entiers négatifs

2.1 - Entiers signés
2.2 - Représentation en complément
2.2.1 - Complément restreint (à un)
2.2.2 - Complément vrai (à deux)
2.3 - Nombres en forme décimale codée binaire (DCB)
3 – La représentation des nombres fractionnaires
3.1 – Les nombres en virgule fixe
3.1.1 – Du décimal vers une autre base
3.1.2 – D’une base (autre que le décimal) vers le décimal
3.2 – Les nombres en virgule flottante
3.2.1 – Représenter un nombre en virgule flottante
3.2.2 – Retrouver la valeur décimale d’un nombre représenté
en virgule flottante
2
3 – La représentation des nombres fractionnaires
3.1 – Les nombres en virgule fixe
Conclusion
La représentation en virgule fixe occupe cependant une
place importante quand on utilise de grands nombres
et on lui préférera alors une autre forme de
représentation dite en virgule flottante.
3
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante
 On associe à un nombre en virgule flottante deux
jeux de valeurs :
Le premier représente les chiffres significatifs du nombre,
c’est la mantisse
Le second indique la puissance à laquelle la base est élevée,
c’est la caractéristique ou l’exposant

Ainsi, lorsqu’on écrit en décimal 12 E 8
- 12 est la mantisse
- 8 est l’exposant (souvent repéré par la lettre E)

L’ensemble est équivalent à 12 x 108 (10 étant la base)
ou encore à 1 200 000 000.
4
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante (suite)

La manière la plus évidente, et la plus concise, pour
représenter un nombre en virgule flottante est donc
d’employer une mantisse et un exposant signés.

Exemples :
-123,45
= -0,12345 E 3 = -0,12345 x 10+3
0,0000678 = +0,678 E -4 = +0,678 x 10-4
5
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante (suite)

Cependant, on utilise en règle générale un exposant décalé au
lieu de l’exposant simple de façon à éviter de traiter des
exposants négatifs (à condition bien sûr que le décalage choisi
soit suffisamment grand).

Par exemple, si on considérait un décalage de 5
(ce qui revient à l’addition systématique de 5 à l’exposant réel),
on aurait :
-123,45
 - 0,12345 E +3 (exposant positif)
 On y ajoute le décalage de 5  (+3 + 5) = +8
 Ce qui donne : - 0,12345 E +8
+0,0000678
 + 0,678 E - 4 (exposant négatif)
 On y ajoute le décalage de 5  (- 4 + 5) = +1
 Ce qui donne : + 0,678 E +1
6
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante (suite)

On peut noter qu’à priori une représentation en
virgule flottante n’est pas nécessairement unique.
Ex. : 0,1295 x 102 = 0,01295 x 103 = 0,0001295 x 105

Solution : une forme normalisée afin que la
représentation ne varie pas d’un matériel à l’autre.
Un nombre normalisé, en virgule flottante est un
nombre dans lequel :
- le chiffre à droite de la marque décimale n’est pas un zéro,
- le chiffre à gauche de la marque décimale est un zéro.
Ex. : 129,50
0,01295 x 104
0,1295 x 103
1,295 x 102
7
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante (suite)

On peut trouver, en fonction des organismes de
normalisation ou des constructeurs, plusieurs normes
de représentation des nombres en virgule flottante
(IEEE, DEC, IBM, …).

Nous allons étudier la norme IEEE
(Institute of Electronical and Electronics Engineers)
8
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante (suite)

La standard IEEE définit trois formats de représentations
de nombres en virgule flottante :
- La simple précision sur 32 bits
(E : 8bits ; SM : 1 bit ; M : 23bits)
1 bit
8 bits
23 bits
Signe Exposant Mantisse
- La double précision sur 64 bits
(E : 11 bits ; SM : 1 bit ; M : 52 bits)
- La précision étendue sur 80 bits
(E : 15 bits ; SM : 1 bit ; M : 64 bits)
9
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante (suite)
3.2.1 – Représenter un nombre en virgule flottante
 Prenons un exemple, on veut représenter en virgule
flottante (10,50)10
1)
La base utilisée dans cette norme est la base 16, il
faut donc dans un premier temps transcrire (10,50)10
en base 16, ce qui donne (A,8)16 (10A et 0,5 x 16 = 8)
(1010,1)2
1)
Ensuite, il faut normaliser (décaler la virgule vers la
gauche de façon à trouver une forme normalisée), ce
qui donne donc : 1.0101 E2 +3
10
3 – La représentation des nombres fractionnaires
3.2.1 – Représenter un nombre en virgule flottante (suite)
3)
Dans la norme IEEE, l’exposant est codé en décalage
par rapport à l’exposant de référence, à savoir (127)10
On a donc :
Exposant de référence + Décalage = Exposant décalé
Ici, (127)10 + (3)10 = (130)10 soit (10000010)2
Le signe du nombre étant positif, le bit représentatif
du signe sera positionné à zéro.
5) Il y a un bit caché (la partie entière)
4)
11
3 – La représentation des nombres fractionnaires
3.2.1 – Représenter un nombre en virgule flottante (suite)
Ce qui donne au final
Exposant décalé
Signe
(130)10
positif
(10000010)2
Mantisse
0101
0 100 0001 0 010 1000
(10,50)10 = (
4
1
Exposant et Signe
(7 + 1) = 8 bits
2
8
0000 0000
0
Mantisse
24 bits
0
0000 0000
0
0 )16
12
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante (suite)
3.2.2 – Retrouver la valeur décimale d’un nb représenté en virgule flottante
Exemple : Le nombre (41 b1 00 00)16
1)
Il faut tout d’abord retrouver la forme binaire
0100 0001
(
4
1
Signe +Exposant
2)
1011 0001
B
1
0000 0000
0
0
0000 0000
0
0 )16
Mantisse
Ensuite, on déduit le signe, l’exposant et la mantisse
Signe : le bit est à zéro, donc c’est un nombre positif
Exposant : (10000011)2 = (131)10 donc (4)10 qui est le décalage
de base (l’exposant est E -127)
Mantisse : (1,0110001)2
13
3 – La représentation des nombres fractionnaires
3.2.2 – Retrouver la valeur décimale d’un nb représenté en virgule flottante


Comme l’exposant que nous avons trouvé ici est +4,
on sait que l’on peut alors « dénormalisé » en
repoussant la virgule de 4 chiffres vers la droite ce qui
nous donne donc : (10110,001)2
Puis, on convertit ce nombre en décimal (base 10)
Soit
(1 x 161) + (6 x 160) = (22)10
(2 x 16-1) = (0.125)10
d’où (22,125)10
14
3 – La représentation des nombres fractionnaires
3.2 – Les nombres en virgule flottante (suite)

Ce type de stockage, sous une forme en virgule
flottante, permet de coder de grands nombres

Ainsi, on peut stocker des nombres
allant de 10+76,8 environ à 10-75,6 environ.

C’est ce type de stockage qui minimise la place
occupée sur les supports.
15
Nombres entiers positifs
Conversion directe
décimal  binaire, octal, hexadécimal
NUMERIQUES
DONNEES
NON NUMERIQUES
Nombres entiers négatifs
Entiers signés (bit de signe)
Complément restreint (à 1)
Complément vrai (à 2)
Décimale Codée Binaire (DCB)
Nombres fractionnaires
Virgule fixe
Virgule flottante ( Exposant, mantisse, …)
Codage par tables
ASCII / ANSI
7 bits
EBCDIC
8 bits
UNICODE
16 bits
16
Téléchargement