[PDF] Codage des nombres 7 fév. 2022 2





Previous PDF Next PDF



Représentation des nombres flottants

Signe de la mantisse. Position du point décimalMantisse. Exposant. Signe de Avec 2 digits réservés au codage de l'exposant ... 3.14 En Binaire (approx):.



Correction du Travaux Dirigés N°2

Conversion de 8625 en binaire : 8



Représentation des nombres réels

En conséquence en binaire on ne peut représenter exactement Exemple: supposons la représentation suivante: signe exposant mantisse. 00111011.



Chapitre 2 : Représentation de linformation

l'information et sa représentation binaire Dans le système binaire pour exprimer n'importe quelle valeur ... Exposant. Mantisse normalisée.



Le codage des nombres

Avec la mantisse et l'exposant en binaire. • A la fin des années 70 chaque ordinateur avait sa propre représentation pour les nombres à virgule flottante.



Codage des nombres

7 fév. 2022 2 Représentation binaire d'un entier relatif ... Ici la mantisse est 01011 codée sur 5 bits et l'exposant est 100 codé sur 3 bits.



4. Représentation des réels et caractères.key

Convertir 125 en binaire sur 32 bits avec IEEE 754. Écrire la réponse en hexadécimal. (signe) 1



Représentation de nombres réels

Pour le codage de nombres en virgule flottante en binaire on peut apporter quelques améliorations signe mantisse exposant mantisse normalisée.



IEEE-754 : Aide Mémoire

Si un nombre ne peut pas exactement être représenté en binaire flottant Exposant. Mantisse. 1 bit. 4 bits. 11 bits. 2 Codage d'un flottant.



1.8 Exercices

pour la mantisse normalisée (le premier bit de la mantisse normalisée a) Donner les valeurs binaires et décimales de tous les exposants pos-.



[PDF] Représentation des nombres flottants

Signe de la mantisse Position du point décimalMantisse Exposant Signe de Avec 2 digits réservés au codage de l'exposant 3 14 En Binaire (approx):



[PDF] Chapitre 2 : Représentation binaire des nombres réels

Il reste maintenant à voir comment sont codés la mantisse et l'exposant Codage de la mantisse Pour représenter les flottants la base choisie est la base 2 ( 



[PDF] Les nombres flottants - Université de Genève

exposant: 127–2 = 125 = 01111101 en binaire mantisse: 01010101010101010101010 Représentation IEEE sur 32 bits: [0 01111101 01010101010101010101010]



[PDF] Représentation numérique de linformation Séquence 4 : Nombres

Exemple : conversion de 288625 en binaire M : mantisse écrite en virgule fixe en base b Exposant Partie fractionnaire mantisse



[PDF] Correction du Travaux Dirigés N°2 Représentation de linformation

Conversion de 8625 en binaire : 8625 => 1000101 car o Pseudo mantisse sur 23 bits : 000 1010 00000000 00000000 Signe Exposant biaisé



[PDF] Représentation de nombres réels

Représentation comprenant : un bit de signe un exposant biaisé de 3 bits et une mantisse de 3 bits avec utilisation du bit caché Code Valeur binaire Valeur 



[PDF] IEEE-754 : Aide Mémoire

On décale donc les bits de la mantisse du nombre ayant le plus petit exposant d'autant de bits vers la droite que la différence entre les exposants sans 



[PDF] Le codage des nombres

Avec la mantisse et l'exposant en binaire • A la fin des années 70 chaque ordinateur avait sa propre représentation pour les nombres à virgule flottante



[PDF] Cours dalgorithmique - Faculté des Sciences de Rabat

où M est la mantisse (virgule fixe) et E l'exposant (signé) Le codage en base 2 format virgule flottante revient à coder le signe la mantisse et l'exposant



[PDF] Virgule flottante

exposant mantisse format simple précision 0 31 S 22 mantisse exposant Binaire en virgule flottante Opérandes Alignés Résultat normalisé

  • Comment trouver la mantisse binaire ?

    C'est un nombre flottant normalisé : la mantisse est la partie à droite de la virgule, complétée de 0 vers la droite pour obtenir 23 bits. Cela donne 110 1101 0100 0000 0000 0000 (on omet le 1 avant la virgule, qui est implicite). L'exposant est égal à 6, et nous devons le convertir en binaire et tenir compte du biais.
  • Quel est le plus petit nombre représentable en virgule flottante format IEEE 754 normalisé ?

    Comme vous l'avez remarqué, le plus petit exposant autorisé est ?126. Le plus petit nombre représentable est donc ( 1 , 00000000000000000000000 ) 2 × 2 ? 126 ? 1.17 × 1 0 ? 38 (1,00000000000000000000000)_2 \\times 2^{?126} \\approx 1.17 \\times 10^{?38} (1,00000000000000000000000)2??126?1.17??38.
  • Comment coder un flottant ?

    En informatique, on note les nombres flottants sous la forme suivante :

    1zéro : 0.0 , ou parfois 0 comme pour les entiers, la conversion sera réalisée par le compilateur.23.14159265 , la virgule est remplacée par le point, il s'agit de la notation anglo-saxonne.
  • Exemple : ?riture en nombre flottant du nombre décimal 10,375.

    1On donne la forme normalisée de ce nombre : 10,37510 = 1010,0112 = (–1)0 × 1,010011 × 23.2Le nombre décimal est positif, le signe vaut donc 0.3On applique l'exposant « décalage + 127 » : 3 + 127 = 130 codé en binaire par 10000010.

Codage des nombres

7 février 2022

Le site suivanthttp://www.binaryconvert.com/index.htmlpropose quelques conversions possibles.

1 Écriture d"un entier naturel dans une baseb

Le système décimal est une invention de l"homme, qui est désormais utilisé par tous les pays

du monde. Il a pourtant fallu attendre plusieurs siècles pour cela... 1.

Généra lités

En base 10,523 = 5×102+ 2×101+ 3×100.

En base7,(523)7= 5×72+ 2×71+ 3×70.

Réciproquement, pour décomposer523en base7, on effectue des divisions euclidiennes successives par7:algorithme:decomposition_baseEntrées:n,b?Navec

b>2Résultat: l"écriture en basebde l"entiernVariables:a,ddeux entiers et une chaîne de caractère mota←nmot←? ?# mot videTant quea?= 0, Faired←le reste de la division deaparbmot←d+mot# ajoute le caractèredà mota←a/bFin du Tant que

Renvoyer motCet algorithme est de complexité logarithmique. Le nombre d"itérations correspond au

nombre de chiffres en basebde l"entiern, qui vaut ?logb(n)?+ 1. 2.

Le cas de la base 2

En base deux, il n"y a que deux chiffres0ou

1. Par exemple,(1011)2= 8 + 2 + 1 = 11.

Les 4 chiffres qui constituent l"écriture en base 2 de 11 sont appelés des bits. On dit aussi que1011est un mot binaire de 4 bits. Un octet correspond à8bits. 1

Le mot binaire100...00????

nzéroscode l"entier naturel2n(l"équivalent en base10est par exemple

1000 = 10

3). Avecnbits, on peut coder2nentiers donc tous les entiers de0à2n-1. Le plus grand entier naturel codé surnbits est(111...11)2???? nbits, il vaut2n-1(l"équivalent en base10est par exemple999 = 103-1).

Remarques :

•multiplier par2krevient à rajouterkzéros sur la droite. Par exemple,(101101)2× 2

3= (101101 000)2.

•rappelons une approximation utile en informatique :210= 1024≂1000 = 103. 3.

Le cas de la base hexadécimale (base 16)

Le nombre140s"écrit en base deux(1000 1100)2et(8C)16en base16. On remarque que (1000)

2= 8 = (8)16et(1100)2= 8 + 4 = 12 = (C)16.

Un mot de 4 bits est un entier compris entre0et15, donc un chiffre en base 16. En regroupant par paquets de 4 bits à partir de la droite, on obtient une correspondance facile entre la base2et la base 16. En effet,(8C)16= 8×161+12×1 = 8×24+12×1 = (1000)

2×24+ (1100)2= (1000 0000)2+ (1100)2= (10001100)2.

L"avantage de la base 16 étant qu"elle nécessite moins de chiffres et est donc plus lisible pour un humain. Remarque : les fonctionsbin(resp.hex) de Python renvoie les décompositions binaires (resp. hexadécimales) d"un entier. >>> bin(140) "0b10001100" >>> hex(140) "0x8c" 4. Comme à l"école primaire. A dditionset m ultiplicationsp osées...

2 Représentation binaire d"un entier relatif

Commet coder un entier relatif surnbits? Une solution pourrait être par exemple d"utiliser le premier bit pour coder le signe de l"entier relatif. Dans ce cas, le nombre zéro aurait deux

représentations différentes00...0et10...0. Le plus gros inconvénient serait que l"algorithme

de l"addition ne fonctionnerait pas si on ajoute des nombres de signe différent. En effet, par exemple avecn= 4bits, on aurait-2représenté par1010,1représenté par0001. L"addition des mots1010et0001donne le mot1011qui représente le nombre-3. Mais-2 + 1 =-1 et la représentation de-1est1001. 2

2.1 Représentation en complément à deux ou modulo2n

On va procéder autrement, et utiliser une représentation dite "en complément à deux» ou

"représentation modulo2n». Définition 1 (Représentation d"un nombre relatif en complément à deux)Voici le prin-

cipe : avecnbits nous allons coder2nentiers dont la moitié sont positifs ou nuls. Plus précisé-

ment nous allons pouvoir représenter les entiers naturels de0à2n-1-1et les entiers négatifs de-1à-2n-1: •six?J0,2n-1-1K, on représentexpar son mot binaire associé

•six?J-2n-1,-1K, on représentexpar le mot binaire qui code l"entier naturelx+ 2n.Figure1 - La représentation des nombres relatifs en complément en deux surnbits

Remarques :

•six?J-2n-1,-1K, le nombrex+2nest compris entre2n-2n-1et2n-1, c"est-à-dire entre 2 n-1et2n-1. Il est donc le reste de la division euclidienne dexpar2n. La représentation ci-dessus peut donc s"interpréter avec un point de vue plus mathématique : six?J-2n-1,2n-1-1K,xest représenté par le mot binaire codant son unique représentant modulo2ndansJ0,2n-1K. •il est facile de tester si un nombre est négatif. Sa représentation binaire commence par un1. 3

•additionner deux entiers relatifs revient à additionner leur représentation. C"est une consé-

quence du fait qu"on puisse additionner deux congruences modulo2n. En effet, six etysont deux entiers deJ0,2n-1K, en notantπ(x)etπ(y)leur représentation, on ax≡π(x) mod 2nety≡π(y) mod 2n, doncx+y≡π(x) +π(y) mod 2n. Ainsi

π(x+y) =π(x) +π(y).

2.2 Un exemple avecn= 3

Sin= 3, on peut coder les huit entiers0,1,2,3et-1,-2,-3,-4. comme3 = (011)2,3est codé par le mot011. Le nombre-3est négatif, on considère alors-2 + 23= 6 = (110)2, son représentant modulo23. On code ainsi-3par le mot110.

Attention, il faut donc bien distinguer un nombre de sa représentation.Figure2 - La représentation des nombres relatifs avecn= 3bits

Regardons toute de suite une conséquence : l"addition de deux nombres positifs peut donner un

résultat négatif. En effet, quel résultat est renvoyé si l"on demande2+3sachant que5ne peut

être représenté en complément à deux avec3bits? Et bien2est représenté par010,3par011, on additionne leur représentation, cela donne101, qui code l"entier négatif-3puisque

(5-8 =-3).

2.3 Quel nombre de bitsnen pratique dans les langages de pro-

grammation? Dans la plupart des langages de programmation comme C, Java, Fortran,..., les entiers relatifs

sont codés sur 64 bits, ce qui correspond à la taille des registres du processeur, et qui permet

d"effectuer des calculs très rapides. En Python, un autre choix a été fait, les entiers de typeint

n"ont pas de taille maximale. Cela a des avantages, mais aussi des inconvénients, les calculs ne seront pas très rapides. Par exemple sur64bits, le plus grand entier positif représentable est x= 263-1et on voit que Python manipule bienx+ 1. >>> x = 2**63-1 4 >>> x

9223372036854775807

>>> x+1

9223372036854775808

En Python, tous les entiers ne sont pas forcément de typeint. En effet avec le modulenumpy

spécialisé dans le calcul numérique (il repose sur une librairie C), on peut manipuler des entiers

codés de différentes manières. >>> import numpy as np >>> y = np.int64(x) # on convertit l"entier x en un entier relatif <> codé sur 64 bits >>> y + np.int64(1) -9223372036854775808 Cette fois-ci,y+ 1donne le nombre négatif-263, ce qui est conforme au codage modulo264. De même, si on demande de calculer2y= 2(263-1) = 264-2≡ -2 mod 264, cela renverra -2.

3 Un peu de mathématiques : écriture décimale et bi-

naire d"un rationnel 1.

En base 10

On a5,387 = 5 + 3×10-1+ 8×10-2+ 7×10-3.

On appelle nombre décimal, tout nombre réel qui s"écrit avec un nombre fini de chiffres après la virgule, c"est-à-dire de la forme a10 naveca?Zetn?N. On noteDl"ensemble des nombres décimaux. Tout nombre décimal est rationnel, mais la réciproque est fausse puisque 13 = 0,333... n"est pas décimal. Un autre argument plus arithmétique est de dire que si 13 =a10 n, alors

3a= 10net donc3divise10, ce qui n"est pas. Pour obtenir la décomposition décimale

d"un rationnel, on fait des divisions euclidiennes successives. Exemples : 435
= 8,6, mais 257
= 3,571428 571428.... On parle de développement décimal illimité mais périodique. 2.

En base 2

On a(1,011)2= 1 +12

2+12 3. On appelle nombre dyadique, tout nombre réel qui s"écrit avec un nombre fini de chiffres en base deux après la virgule, c"est-à-dire de la forme a2 naveca?Zetn?N. On note D

2l"ensemble des nombres dyadiques.

Par exemple,

532
=132 +432
=12 5+12

3= (0,00101)2. De même,6.125 = 6+18

= (110,001)2. Cet exemple est important, il montre que l"on ne peut représenter de manière exacte en base deux, un nombre aussi simple que 15 = 0,2. En effet, en base 16,15 = (0,333...)16 d"où en base deux,15 = (0,0011 0011...)2. 5

4 Représentation des nombres flottants

Dans de nombreux domaines, on nécessite de faire des calculs avec des "nombres à virgule» qui

ne sont pas forcéments entiers (des prix, des masses, des volumes, certaines constantes physiques comme le nombre D"Avogadro, la constante de Boltzmann). On représente ces nombres par un type informatique, appelé "nombre flottant». >>> type(2.5)

4.1 Principe de codage des flottants à l"aide de l"écriture scientifique

binaire

Nous allons pouvoir représenter des "nombres à virgule» écrits en base deux, sous forme "scien-

tifique». Nous les appellerons des nombres flottants : x=±1.m×2e oùmest un mot binaire appelémantisseet e un mot binaire représentant un entier relatif, appeléexposant. Le zéro sera codé à part. Par exemple, l""écriture scientifique binaire» du nombrex= 21,5est(1.01011)2×24, car :

21.5 = (16+4+1)+12

= (10101)2+(0.1)2= (10101.1)2= (1.01011)2×24= (1.01011)2×2(100)2. Ici la mantisse est01011codée sur5bits, et l"exposant est100codé sur3bits. Supposons maintenant que la mantisse soit codée sur 2 bits, que l"exposant minimal vaut-1 et l"exposant maximal2(ainsi il y a 4 valeurs d"exposants possibles, donc l"exposant est codé aussi avec2bits). On réserve aussi 1 bit pour le signe. On a ainsi|s????

1bit|e????

2bits|m????

2bits|. Avec 5

bits, nous pouvons coder25nombres flottants. Voici la liste des 16 positifs :(1.00)2×2-1= 0.5(1.10)2×2-1= 1/2 + 1/4(1.00)2×20= 1(1.10)2×20= 1 + 1/2(1.00)2×21= 2(1.10)2×21= 3(1.00)2×22= 4(1.10)2×22= 6(1.01)2×2-1= 1/2 + 1/8(1.11)2×2-1= 1/2 + 1/4 + 1/8(1.01)2×20= 1 + 1/4(1.11)2×20= 1 + 3/4(1.01)2×21= 2 + 1/2(1.11)2×21= 3 + 1/2(1.01)2×22= 5(1.11)2×22= 7Le plus grand flottant7est obtenu avec une mantisse maximale et un exposant maximal. Le

plus petit flottant positif0,5est obtenue avec la mantisse nulle et l"exposant le plus petit ici (-1).

La mantisse étant constituée de2bits, on dit que l"on a une précision avec2chiffres binaires

significatifs. Si on place ces flottants sur une droite graduée, on remarque qu"ils ne sont pas uniformément répartis sur[0.5;7], ils sont plus concentrés autour de0,5.

Voici un graphique où l"on a représenté les nombres flottants que l"on peut coder avec 8 bits.

6

Figure3 - Nombres flottants sur 8 bits

4.2 Norme IEE 754

En Python, et comme dans la plupart des langages de programmation ou de calcul scientique,

un nombre flottantxest représenté sur 64 bits selon la norme IEEE 754 de la façon suivante :

x= (-1)s×1.(m1m2...m52)2×2e. •l"entiersappelésignevaut0sixest positif et1sinon. •les bits (valent0ou1)m1,...,m52constituent lamantissem. •l"entiereest l"exposant, on le code par la représentation binaire sur 11 bits de l"entier naturelEdéfini pare=E-1023. L"entierEétant codé sur 11 bits, il prend les valeurs deJ0,211-1K=J0,2047K. Mais les mots "extrêmes»00000000000et11111111111étant réservés, l"entierEne prend que les valeurs deJ1,2046K. Par exemple, le nombre décimal5.25s"écrit en base deux1.0101×22. On a doncs= 0,m= 0101 ete= 2doncE= 1025donc sa représentation est :0???? s10000000001???? m

Remarque :

•la valeur0est une exception. Elle sera représentée par une mantisse et un exposant nuls. •en Python, la fonction sifest un nombre flottant,f.hex()renvoie la mantisse en hexa- décimal (donc 13 chiffres, puisque13×4bits= 52bits) et l"exposant e en décimal après le p. >>> f = 5.25 >>> f.hex() "0x1.5000000000000p+2" Cela dit que5.25est représentée par le nombre1.(5000000000000)16×2+2.

Exercice 1 (questions en vrac)

7

1.Quel est le nom bredon tla représen tationIEE 754 sur 64 bits est :

1???? s10000000010???? m On aE= 210+ 2 = 1026donce=E-1023 = 3. Ainsi le développement binaire du nombre est-1.01×23=-1010, ce qui donne-10en base10. 2.

Donner la représen tationflottan tedu nom bre

1132
On a 1132
=832 +232
+132
=14 (1 +14 +18 ) = 1.011×2-2. Ainsie=-2etE= 1021. La représentation est donc :0???? s01111111101???? m 3. Quel est le plus p etitnom breflottan tstrictemen tp ositif?Donner sa représen tation,puis une valeur approchée. Il est obtenu avec une mantisse nulle et un exposant minimal, c"est-à-dire pourE= 1 donce= 1-1023 =-1022, c"est donc1.0×2-1022≈2.225×10-308. 4. Quel est le plus grand nom breflottan t?Donner sa représen tation,puis une v aleurappro- chée. Il est obtenu avec une mantisse maximale donc111...111et un exposant maximal doncE= 2046donce= 2046-1023 = 1023. Son développement binaire est donc

1.111...111????

52bits×21023= 111...111????

53bits×2-52×21023. Ce nombre vaut

(2

53-1)2971≈1.797×10308.

Remarque : en particulier, le nombre1.2×10309ne peut être représenté par un flottant, on a un "overflow». >>> 1.2*10**309

Traceback (most recent call last):

File "", line 1, in

OverflowError: long int too large to convert to float Mais1.2×10309= 12×10? ?308, donc c"est un entier, et on peut donc le représenter en

Python par le typeint.

>>> 12*10**308 8

5.Quel est le plus p etitnom breflottan tstrictemen tsup érieurà 1? Il s"agit de1+2-52. Son

développement binaire est1.00...001????

52bits. Sa représentation flottante est donc obtenue avec

un exposant nule= 0doncE= 1023.0???? s01111111111???? m Remarque : le nombre2-52est appelé "l"epsilon» de la machine. Comme2-52≈2.22×10-16, cela signifie que lorsqu"on calcule avec des nombres flottants, on ne pourra jamais avoir une précision supérieure à 15 ou 16 chiffres significatifs en base 10! Ceci est confirmé par Python : >>> 1+10**-15

1.000000000000001

>>> 1+10**-16 1.0

4.3 Observations et explications

L""arithmétique flottante» et la propagation des erreurs d"arrondi est une problématique vrai-

ment délicate. Nous pouvons néanmoins retenir ces quelques points : 1.

Phénomè ned"absorbtion

>>> 1.0 + (2**53 - 2**53)

1.0 # ok

>>> (1.0 + 2**53) - 2**53

0.0 #oups,

>>> 1.0+2**53 == 2**53

True # phénomène d"absorption, la petite quantité 1.0 a été absorbée par la grande 2**53

>>> (1+ 2**53) - 2**53

1 # et ici ça marche car on ne travaille pas avec des flottants, mais avec des entiers

Explication : la mantisse représente le nombre de chiffres binaires significatifs, donc52.

Par exemple, le nombre1 + 2-53= (1.0000...01????

53bits)

2nécessiterait une mantisse de53bits.

Or on ne dispose que de 52 bits, on va donc perdre le dernier bit égal à 1 et représenter 1 + 2 -53par(1.0000...0????

52bits)

2, donc par1.

Le nombre2-53lui est bien représentable car2-53= 1.0×2-53, donc s"écrit avec une mantisse nulle et un exposante=-53doncE= 1023-53. Recommandation : ne pas additionner de nombres dont l"écart relatif est très grand. Dans une somme de plusieurs termes, on commencera par additionner les petites quantités. Remarque mathématique : l"addition des nombres flottants n"est donc pas associative. 9

2.Des erreurs d"arrondi

On a déjà vu que le nombre0.1n"était pas dyadique, il a un nombre infini de chiffres binaires après la virgule, on va tronquer son développement binaire et le représenter par un flottant qui ne sera pas tout à fait égal à0.1. Ceci explique que(0.2 + 0.1)-0.3ne soit pas tout à fait égal à0. >>> (0.1+0.2) - 0.3 == 0 False

Par exemple, on a vu que

15 = 1.(1001 1001 1001...)2×2-3donc15 sera arrondi à la valeur 15 = 1.(1001 1001 1001...)2×2-3. Recommandation :ne jamais tester l"égalité entre deux nombres flottants, mais tester si leur distance est inférieure à un nombre très petit. 3.

Phénomè nede "cancellation»

Recommandation : ne pas soustraire des quantités voisines sous peine de perdre beaucoup de précision. Voici un exemple pour comprendre, on prendx= (1.000...11011????

52bits)

2ety= (1.000...00110????

52bits)

2.

Les nombresxetysont très proches, ils ne diffèrent que par leurs 5 dernières "décimales».

On ax-y= (0.000...010101????

52bits)

2= (1.0101)2×2-48. Au lieu des 54 chiffres significatifs

après la virgule, on n"en a plus que4. Ce problème peut se rencontrer si l"on calcule par exemplequotesdbs_dbs41.pdfusesText_41
[PDF] exposant biaisé

[PDF] profondeur de la nappe albienne algerie

[PDF] reserve d eau en algerie

[PDF] nappe de l'albien algérie

[PDF] ressources en eau en algerie

[PDF] l'eau en algérie pdf

[PDF] problématique de l'eau en algérie

[PDF] la gestion de l'eau en algerie

[PDF] carte nappes phréatiques algerie

[PDF] cours de forage d'eau

[PDF] equipement de forage d'eau pdf

[PDF] nombres relatifs définition

[PDF] realisation d'un forage d'eau

[PDF] cours de forage hydraulique

[PDF] techniques forage manuel