Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Vous êtes sur la page 1sur 42

Unit 3: Reprsentation interne des informations

Objectifs :
la fin de cette unit,
- vous saurez comment passer dune base lautre
- vous saurez comment sont reprsents dans l'ordinateur les nombres fractionnaires et les nombres exprims en virgule flottante.
- vous saurez comment l'ordinateur effectue des calculs sur des
nombres utilisant ces reprsentations.
Pour y arriver, vous devez matriser les objectifs suivants :
- passer d'une base une autre par diffrentes mthodes :
valuation la main, l'aide de tables, ou l'aide d'une calculette;

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


Objectifs :
- passer d'une chane de caractres entre au clavier pour
reprsenter un nombre entier, et la convertir dans le format binaire
que comprend l'ordinateur, en passant par la reprsentation
intermdiaire BCD.
- convertir la partie fractionnaire d'un nombre dcimal dans sa
reprsentation binaire et vice-versa;
- convertir un nombre rel dans sa reprsentation en virgule
flottante;
- effectuer les quatre oprations arithmtiques sur des nombres en
virgule flottante

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Le BCD
Le BCD est un code dans lequel chaque chiffre dun nombre dcimal
est cod en binaire sur 4 bits.
Ces chiffres peuvent tre reprsent sur un octet individuel, cest le
BCD non compact.
Exemple :
32710 0000 0011
0000 0010 0000 0111
Comme chaque chiffre nutilise que 4 bits, on peut les grouper 2 par
octet. Cest le BCD compact.
Exemple :
5310 0101 0011
PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Il sagit dvaluer lexpression

i
a
B
i dans la base destination.
i=0

Dcimal-binaire :
14210 = (1 102) + (4 101) + (2 100)
= (1 10102 10102) + (1002 10102) + 00102
= 1000 11102

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Dcimal-binaire :
On peut effectuer les multiplications par 10 en remarquant que 10x
= 8x + 2x, et en se rappelant quun dcalage gauche de 1 bit est
une multiplication par 2. Cest gnralement plus rapide que la
multiplication binaire.
Ainsi, 10102 x 10102 = 10100002 + 101002 = 110 01002.
1002 x 10102 = 1000002 + 10002 = 10 10002
On obtient finalement :
14210 = 110 01002 + 10 10002 + 00102
et
14210 = 1000 11102
PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Binaire-dcimal :
1000 11102
=
2 3)

(1 27) + (0 26) + (0 25) + (0 24) + (1


+ (1 22) + (1 21) + (0 20)
=27 + 23 + 22 + 21
=12810 + 8 + 4 + 2 = 14210

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Factorisation de Horner
n

i
a
B
i = anBn + an-1Bn-1 + + a1B + a0
i=0

= (((((0 + an)B + an-1)B + an-2)B + a1)B + a0

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Binaire-dcimal (algorithme R = b + 2R)

1000 1110
1+20=1
0+21=2
0+22=4
0+24=8
1 + 2 8 = 1710
1 + 2 1710 = 3510
1 + 2 3510 = 7110
0 + 2 7110 = 14210
PierreMarchand,2001

R=0

Arithmtique BCD

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Dcimal-binaire (algorithme R = c + 10R)
142

R=0
1 + 10102 0 = 1
1002 + 10102 1 = 11102
102 + 10102 11102 = 1000 11102

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Dans les techniques prcdentes, on effectuait la conversion en
utilisant larithmtique de la base destination.
Toutefois, on peut vouloir effectuer ces conversions en utilisant
larithmtique de la base source. Cest le cas, par exemple, quand
lordinateur, qui doit travailler en arithmtique binaire, dsire
effectuer une conversion binaire-dcimal.
Pour convertir une nombre N dune base source une base
destination en utilisant larithmtique de la base source, on divise le
nombre N par la base destination en utilisant larithmtique de base
source, jusqu ce que le quotient soit nul. La reprsentation de N
dans la base destination est alors donne par la squence
renverse des restes.
PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Exemples : Convertir 2710 en base 4 :
2710

27 / 4 = 6, reste 3
6 / 4 = 1, reste 2
1 / 4 = 0, reste 1 2710 = 123 4

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Exemples : Convertir 1000 11102 en base 10
1000 11102 / 10102 = 11102, reste 00102
1110 / 1010 = 0001, reste 01002
0001 / 1010 = 0000, reste 00012
1000 11102 = 0001 0100 0010 = 14210 en BCD compact
ou 0000 0001 0000 0100 0000 0010 en BCD non compact

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Conversion
hexadcimal-dcimal
et
dcimal-hexadcimal
dentiers laide de la table de lappendice 4.1 du supplment
La table hexadcimal-dcimal est base sur le principe quun
nombre comme 14A616 est la somme de
100016 + 40016 + A016 + 6.
On va donc chercher la valeur dcimal correspondante de chacun
dans la table et on en fait la somme:
409610 + 102410 + 16010 + 6 = 528610
Cette mthode peut tre utilise pour la conversion binairedcimal par programmation et savre trs rapide.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Conversion
hexadcimal-dcimal
et
dcimal-hexadcimal
dentiers laide de la table de lappendice 4.1 du supplment
On pourrait faire une table dcimal-hexadcimal pour la conversion inverse. On peut galement utiliser la mme table que plus
haut avec quelques calculs supplmentaires. On cherche dans la
table la plus grande valeur dcimale qui soit infrieure au nombre
convertir. On soustrait ce nombre, et on recommence avec le
reste.
528610 - 409610 = 119010 -> 100016
119010 - 102410 = 16610 -> + 40016
16610 - 16010 = 610
-> + A016
610 - 610 = 0
->
+ 616
= 14A616
PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Conversion partir lASCII
Exemple :
Supposons que lutilisateur a tap 327. On retrouve en mmoire
les caractres ASCII 3, 2 et 7 qui ont la reprsentation :
0011 0011

0011 0010

0011 0111

On soustrait 0011 0000 (3016 ou 0) de chacun de ces caractres,


ce qui nous donne la reprsentation en BCD non compact :
0000 0011

0000 0010

0000 0111

On utilisera ces octets pour faire la conversion BCD-binaire.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls
Changements de base
Conversion vers lASCII
De la faon inverse, aprs quon a effectu une conversion binaire
dcimal, on a une srie doctets qui constituent la reprsentation
BCD non compact du rsultat. On na qu ajouter 30 16 chacun
pour obtenir la reprsentation ASCII du nombre. Par exemple :
+
=

0000 0011
0011 0000
0011 0011

0000 0010
0011 0000
0011 0010

0000 0111
0011 0000
0011 0111

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Changements de base
N anBn + an-1Bn-1 + + a1B1+ a0 B0+ a-1B-1 + a-2B-2 +
En binaire, ai = 0 ou 1 et B = 2
N an2n + an-12n-1+ + a1.2 + a0 + a-12-1 + a-22-2 +
1
1
1
=an 2n +an12n1 +...+a1.2+a0 +a1 +a2 +a3 +...
2
4
8
Cette dernire formule peut donc servir de conversion binairedcimal.
1
1
1
0,0112 =0 +1 +1
Exemple :
2
4
8
=0,2510 +0,12510 =0,32510

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Changements de base
0,562510
0, 5625 x 2
1, 125 x 2
0, 25 x 2
0, 5 x 2
1, 0 x 2
0, 0
Rponse : 0,100100002
Pour passer du dcimal une autre base, il suffit de multiplier par
la base en question au lieu de 2.
PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Changements de base
Pour un nombre constitu dune partie entire et dune partie
fractionnaire, on convertit les deux parties sparment, la partie
entire avec lune des mthodes de conversion des entiers, la
partie fractionnaire avec les mthodes prsentes dans la
prsente section.
Exemple: convertir 123,214 en dcimal
1234 = 1 42 + 2 4 + 3 = 2710
0,214 = 2 4-1 + 1 4-2 = 2 x 0,25 + 1 0,0625 = 0,562510
Rponse : 27,562510

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Changements de base
Convertir 27,562510 en base 4 :
27 / 4 = 6, reste 3
6 / 4 = 1, reste 2
1 / 4 = 0, reste 1 -> 1234
0, 5625 x 4
2, 25 x 4
1, 0 x 4
0, 0
Rponse : 123,2100004

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Conversion dcimal-binaire et binaire dcimal laide de la table
de lappendice 4.2 du supplment
Mme principe que pour les entiers.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule fixe
Partie entire Partie fractionnaire
32
32
,

Inconvnients : tendue de reprsentation limite


32 bits seulement dans la partie entire
32 bits seulement dans la partie fractionnaire
Perte de prcision pour les petits nombres
Complexit de traitement de la virgule lors doprations telles que la multiplication et la division

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule fixe
Exemples :

1,0

= 00000001,0000000016

-1,0

= FFFFFFFF,0000000016

0,5

= 00000000,8000000016

-0,5

= FFFFFFFF,8000000016

Plus petit nombre positif : 00000000,00000001 = 1 / 4 294 967 296


Plus grand nombre positif :
7FFFFFFF,FFFFFFFF = +2 147 483 647,999999999767

Plus grand nombre ngatif :


80000000,00000000 = -2 147 483 648, 999999999767
Plus petit nombre ngatif :
FFFFFFFF,FFFFFFFF = -1 / 4 294 967 296
PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
N = (1)s M BE
o :
M = mantisse
B = base
E = exposant
s = signe de la mantisse
Exemples:
10110 = 1,01 102
- 510 = - 1012 = - 1,01 22
510 = 1012 = 516 = 0,0101 161
PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Norme IEEE 754 de simple prcision
La mantisse M est normalise sous la forme 1,f et lexposant est
ajust en consquence. La partie f est code sur 23 bits.
On ajoute 127 E et le total est cod sur 8 bits.
s est le signe de la mantisse.
s E+127
8

f
23
32

N = (-1)s 2E 1,f

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Norme IEEE 754 de simple prcision
Exemple :
100010 = 3E816 = 11111010002 = 1,111101000 29
s = 0 car nombre positif
E = 9 donc E + 127 = 136 = 100010002
M = 1,111101000 donc f = ,111101000

0 10001000 11110100000000000000000
quon peut crire 447A0000IEEE en groupant les bits 4 par 4 et en
les codant en hexadcimal.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Norme IEEE 754 de simple prcision
Exemple :
Convertir le nombre de simple prcision 40500000IEEE en dcimal.
0 10000000 10100000000000000000000
s = 0 donc signe = +
E + 127 = 128, donc E = 1
M = 1,f = 1,101
N = +1,1012 21 = 11,012 20 = 3,2510

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Norme IEEE 754 de simple prcision
Exemples :
+0 = 00000000IEEE -0 = 80000000IEEE
+1 = 3F800000IEEE -1 = BF800000IEEE
+2 = 40000000IEEE -2 = C0000000IEEE
+ = 7F800000IEEE - = FF800000IEEE

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Norme IEEE 754 de double prcision
La mantisse M est normalise sous la forme 1,f et lexposant est
ajust en consquence. La partie f est code sur 52 bits.
On ajoute 1023 E et le total est cod sur 11 bits.
s est le signe de la mantisse.
s E+1023
11

f
52
64

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
tendue de reprsentation
En simple prcision, la reprsentation des nombres normaliss
positifs non nuls va de 00800000IEEE 7F7FFFFFIEEE, soit :
1,000000000 x 2-126 1,1111111111 x 2127
9,4039548 10-38 3,4028235 10+38.
En double prcision, elle va de 0010000000000000IEEE
7FEFFFFFFFFFFFFFIEEE, soit :
1,0000000000... 2-1022 1,11111111111... 21023
2,22407385851 10-308 1,797693134862316 10308

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Nombres dnormaliss
En simple prcision, si lexposant E est -127 (reprsentation
00000000) et que les bits de la mantisse ne sont pas tous nuls, le
nombre reprsent est :
N = (s)-1 x 2-126 0,f
On peut ainsi, malgr une perte de prcision, tendre la reprsentation jusqu 2-149, i.e. 10-45.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Les NaN
Les reprsentations commenant par 7F ou FF en simple prcision et dont les autres bits ne sont pas tous 0 reprsentent des
NaN (Not a Number). Ces NaN sont utiliss pour signaler des
messages derreur.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Sources derreur
Erreur darrondi ou de troncature
Dbordement de capacit
Sous-dbordement de capacit
Division par 0
Oprations invalides : , 0, 0 / , 0 / 0, etc.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Addition et soustraction
On doit :
1. Extraire les mantisses et les exposants
2. Ajuster les exposants et les mantisses pour que les deux
nombres aient lexposant du plus grand des deux.
3. Effectuer laddition ou la soustraction des mantisses
4. Normaliser la mantisse rsultante sil y a lieu
5. Replacer le rsultat, mantisse et exposant, dans le format
IEEE.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Addition et soustraction
Exemple :
40400000IEEE + 3F000000IEEE
= 0 10000000 10000000000000000... + 0 01111110 00000000000000000...

= + 2128-127 1,100000 + 2126-127 1,000000...


= 1,1 21 + 1,0 2-1 = 1,1 21 + 0,01 21 = 1,11 21
= 0 10000000 11000000000000000000000
= 40600000IEEE

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Multiplication et division
A = a 2p et B = b 2q, alors :
A B = ab 2p+q
A / B = (a/b) 2p-q
On doit :
1. Extraire les mantisses, les signes et les exposants
2. Additionner ou soustraire les exposants suivant le cas
2. Effectuer le produit ou le quotient des mantisses
4. Normaliser la mantisse rsultante sil y a lieu
5. Ajuster le signe sil y a lieu
6. Replacer le rsultat, signe, mantisse et exposant, dans le format
IEEE.
PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires
Virgule flottante
Multiplication et division
Exemple:
40A00000 C0C00000

= 0 10000001 01000000000000000... 1 10000001 10000000000000000

= + 2129-127 1,01 - 2129-127 1,1


= - 1,01 22 1,1 22 = - 1,1110 24
= 1 10000011 11100000000000000000000
= C1F00000IEEE

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.4 Dcimaux cods en binaire
Code BCD = code pondr 8-4-2-1 comme le binaire naturel
Code excdent-3 : chiffre = binaire + 3
Code 2 dans 5 : chiffre dcimal cod sur 5 bits dont deux sont 1
Code biquinaire : chiffre dcimal cod sur 7 bits, dont 1 dans les
deux positions de gauche et 1 dans les 5 positions de droite est 1.
Les deux derniers codes permettent la dtection derreurs.

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.4 Dcimaux cods en binaire
dcimal
0
1
2
3
4
5
6
7
8
9

PierreMarchand,2001

BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001

excdent-3 2 dans 5
0011
00011
0100
00101
0101
00110
0110
01001
0111
01010
1000
01100
1001
10001
1010
10010
1011
10100
1100
11000

biquinaire
01 00001
01 00010
01 00100
01 01000
01 10000
10 00001
10 00010
10 00100
10 01000
10 10000

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
Conversion rapide des grands nombres dcimaux en binaire
Nous utilisons l'algorithme de la division par la base
destination en arithmtique de base 10, sauf que nous
choisissons la base 65536 (216).
Exemple : Convertir 36 000 000 000 en binaire
1e tape
36 000 000 000 / 65 536 =549 316, reste 26 624
549 316 / 65 536 = 8, reste 25 028
8 / 65 536 = 0, reste 8
Donc :
36 000 000 000 = 8 x 655362 + 25028 x 655361 + 26624

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
Conversion rapide des grands nombres dcimaux en binaire
2e tape
Comme 65 536 = 2562, on reprsente ensuite chacun des
termes en base 256.
25 028 / 256 = 97, reste 196
26 624 / 256 = 104, reste 0
Donc :
36 000 000 000 = 8 x 2564 + 97 x 2563 + 196 x 2562
+ 104 x 2561 + 0 x 2560

PierreMarchand,2001

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
Conversion rapide des grands nombres dcimaux en binaire
3e tape
Comme 256 = 162, on reprsente ensuite chacun des
termes en base 16.
97 / 16 = 6, reste 1
196 / 16 = 12, reste 4
104 / 16 = 6, reste 8
0 / 16 = 0, reste 0
Donc
36 000 000 000 = 8 x 168 + 6 x 167 + 1 x 166 + 12 x 165
+ 4 x 164 + 6 x 163 + 8 x 162
+ 0 x 161 + 0 x 160
Et finalement : 36 000 000 000 = 861C4680016

PierreMarchand,2001

Vous aimerez peut-être aussi