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;

Pierre Marchand, 2001

69

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

Pierre Marchand, 2001

70

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
Pierre Marchand, 2001

71

Unit 3: Reprsentation interne des informations


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

ai Bi dans la base destination.


i0

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

Pierre Marchand, 2001

72

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

Pierre Marchand, 2001

73

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.1 Entiers positifs ou nuls Changements de base Binaire-dcimal : 1000 11102 = (1 27) + (0 26) + (0 25) + (0 24) + (1 23) + (1 22) + (1 21) + (0 20) = 27 + 2 3 + 2 2 + 2 1 = 12810 + 8 + 4 + 2 = 14210

Pierre Marchand, 2001

74

Unit 3: Reprsentation interne des informations


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

ai Bi = anBn + an-1Bn-1 + + a1B + a0


i0

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

Pierre Marchand, 2001

75

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

R=0 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
76

Arithmtique BCD

Pierre Marchand, 2001

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

Pierre Marchand, 2001

77

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.
Pierre Marchand, 2001

78

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

Pierre Marchand, 2001

79

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

Pierre Marchand, 2001

80

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.

Pierre Marchand, 2001

81

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
Pierre Marchand, 2001

82

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.

Pierre Marchand, 2001

83

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 3016 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

Pierre Marchand, 2001

84

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 2 n an12 n1 ... a1.2 a0 a1 a 2 a 3 ... 2 4 8 Cette dernire formule peut donc servir de conversion binairedcimal. 1 1 1 Exemple : 0,0112 0 1 1 2 4 8 0,2510 0,12510 0,32510

Pierre Marchand, 2001

85

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.
Pierre Marchand, 2001

86

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

Pierre Marchand, 2001

87

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

Pierre Marchand, 2001

88

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.

Pierre Marchand, 2001

89

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

Pierre Marchand, 2001

90

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires Virgule fixe
Exemples : 1,0 -1,0 0,5 -0,5 = 00000001,0000000016 = FFFFFFFF,0000000016 = 00000000,8000000016 = 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
Pierre Marchand, 2001

91

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

Pierre Marchand, 2001

92

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 32 N = (-1)s 2E 1,f f 23

Pierre Marchand, 2001

93

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.

Pierre Marchand, 2001

94

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

Pierre Marchand, 2001

95

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

Pierre Marchand, 2001

96

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

Pierre Marchand, 2001

97

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

Pierre Marchand, 2001

98

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.

Pierre Marchand, 2001

99

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.

Pierre Marchand, 2001

100

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.

Pierre Marchand, 2001

101

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.

Pierre Marchand, 2001

102

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires Virgule flottante Addition et soustraction Exemple : 40400000IEEE + 3F000000IEEE = + 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

= 0 10000000 10000000000000000... + 0 01111110 00000000000000000...

Pierre Marchand, 2001

103

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.
Pierre Marchand, 2001

104

Unit 3: Reprsentation interne des informations


3.3 Donnes numriques
3.3.3 Nombres fractionnaires Virgule flottante Multiplication et division Exemple: 40A00000 C0C00000 = + 2129-127 1,01 - 2129-127 1,1 = - 1,01 22 1,1 22 = - 1,1110 24 = 1 10000011 11100000000000000000000 = C1F00000IEEE

= 0 10000001 01000000000000000... 1 10000001 10000000000000000

Pierre Marchand, 2001

105

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.

Pierre Marchand, 2001

106

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 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 excdent-3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 2 dans 5 00011 00101 00110 01001 01010 01100 10001 10010 10100 11000 biquinaire 01 00001 01 00010 01 00100 01 01000 01 10000 10 00001 10 00010 10 00100 10 01000 10 10000

Pierre Marchand, 2001

107

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

Pierre Marchand, 2001

108

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

Pierre Marchand, 2001

109

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

Pierre Marchand, 2001

110