1. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 1/9
Accueil
du site
En notation décimale, les nombres réels s'écrivent sous forme d'une et d'une
séparées par une : par exemple.
Je rappelle la signification des décimales : par exemple dans
Le 5 représente 5 1/10
Le 7 représente 7 1/100
Le 8 représente 8 1/1000
etc
On définit une notation semblable pour tout nombre représentant un .
Exemple : le nombre représente la somme suivante :
Soit, en écriture décimale : 8 + 2+ 0,5 + 0,125 =
Sous une autre forme :
On peut démonter rigoureusement que tout nombre réel positif inférieur à 1
pourrait être écrit de cette manière.
Resterait à décrire le signe, ce qui peut être fait par un bit particulier (bit de signe)
ou par une convention de type "complément à deux".
Beaucoup de ces variantes ont été utilisées dans les calculateurs.
Pour le nombre :
est la partie ,
sa partie .
Il vaut mieux dire ici " " que " "
2. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 2/9
Car cette dernière dénomination ne se justifie que pour les nombres écrits sous forme décimale.
Notez qu'il n'existe pas de " " mais seulement des " écrits sous forme décimale".
Nous opérons une suite de divisions par 2 et retenons les divers restes.
Ces restes sont repris à l'envers
Voici comment on peut procéder :
Pour plus d'explications cliquer ici :
(écrit ici sous forme décimale)
est égal à écrit en binaire.
Vu la constitution interne des systèmes informatiques,
les données sont représentées en binaire par des "mots" (words ) d'un certain nombre fixé de bits.
8 bits (rare) ou 16 ou 32 , 64, et même 80 bits (10 octets).
Imaginons que ce soir sur 16 bits pour simplifier.
Pour représenter les nombres réels en binaire on pourrait réserver un espace pour la partie entière du nombre
et un autre espace pour la partie fractionnaire.
Par exemple :
C'est cela la représentation en (fixed point ).
Ce mode de représentation n'a que l'avantage de la simplicité !
Il est peu employé. vu ses inconvénients..
Quelques inconvénients...
L'espace réservé à la partie fractionnaire limite le nombre de bits reservés à la partie entière.
Ce qui est gênant pour représenter de très grands nombres,
pour lesquels la partie fractionnaire est généralement peu signifante.
Inversement, la précision sur de très petits nombres est limitée par le manque d'espace dans la partie fractionnaire
alors que pour ces nombres, la partie entière ne contient que des zéros.
Espace mal utilisé dans les deux cas.
La représentation dite "à virgule flottante" - Floating Point -
permet une bien meilleure préservation des chiffres significatifs
3. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 3/9
autant pour les grands que pour les petits nombres,
comme nous allons le voir ci-après.
s'écrit ou
Observons bien la manière dont on construit ce format
à partir d'une expression quelconque d'un nombre.
Prenons pour exemples :
1. On retient le signe du nombre.
Et on ne s'interesse d'abord qu'à sa valeur absolue.
2. On met le nombre sous forme de deux facteurs.
1. Un nombre de l'intervalle (10 non compris) appelé "
1 pour le premier
pour le second
2. Une puissance de 10 ramenant le produit à sa valeur initiale.
pour le premier.
pour le second.
La puissance de 10 est nommée
( Ici : et respectivement).
3. On rétablit le signe.
pour le premier
pour le second.
4. On remplace, 10 par E (ou e) suivis de la caractéristique.
pour le premier
pour le second.
Puis-je écrire le nombre binaire :
(0,005462646484375déc)
en virgule fixe dans un format binaire de 16 bits
(8 pour la partie entière, 8 pour la partie fractionnaire)
???
Bien sûr que non : des chiffres significatifs déborderaient à droite
au-delà de 8 bits après la virgule..
Imaginons maintenant un format binaire toujours à 16 bits très différent
où les 8 premiers bits à gauche (en bleu souligné) seraient dévolus à la ,
4. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 4/9
les 8 autres à la (en rouge non souligné).
La mantisse (voir définition ) : (8 bits)
Elle s'obtient ici en faisant glisser la virgule du nombre initial :
de 8 rangs vers la droite
La caractéristique doit donc être de déc ...
Comment écrit-on -8déc en binaire ?
8déc = 00001000bin
Complément à 1 = 11110111
Complément à 28 (on ajoute 1)= 11111000bin
-8déc = 11111000bin
Le nombre s'écrit
dans un format 16 bits (8 caractéristique, 8 mantisse) à virgule flottante
Ce format ne correspond à aucune norme,
il a été arbitrairement choisi pour la simplicité des explications.
Nous verrons plus bas les formats réels à 32, 64,et 50 bits.
Notons que la comporte une et une .
est la partie de la mantisse,
est sa .
Rien n'interdit de représenter le nombre zéro
par un flottant dont la parties entière et fractionnaire sont nulles
ainsi que la caractéristique.
Mais cette forme du zéro pose des problèmes dans les standards de représentation binaire
des nombres dans les mémoires des machines informatiques.
Notamment dans les formats 32 et 64 bits du standard IEEE.
Utilisé pour le type "float" (simple précision)
Utilisé pour le type "double" (double précision)
5. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 5/9
Les formats à 32 et 64 bits ignorent la partie entière de la mantisse.
Le format à 80 bits mémorise la mantisse avec sa partie entière
Notons que la comporte une et une .
est la partie de la mantisse,
est sa .
La
du nombre obtenu après avoir déplacé la virgule du nombre initial,
de manière à ne laisser subsister qu'un seul chiffre à gauche, différent de zéro.
Pour un nombre écrit en binaire, ce chiffre est invariablement " "
Si le nombre écrit en binaire est : 0000 1010,0110
Après déplacement de la virgule de 3 rangs à gauche : 1,0100110
La partie fractionnaire est :
Le à gauche du zéro .
Il est "implicite" car en binaire ce chiffre est toujours le même : "1" pour tous les nombres.
Sauf, me direz-vous le zéro, cas particulier sur lequel nous reviendrons plus loin.
de combien de rangs
il faut déplacer la virgule se trouvant à gauche de la partie fractionnaire
et dans quel sens (droite ou gauche) après rétablissement du "1" implicite,
pour obtenir le nombre à représenter.
Pour mesurer ce déplacement, tantôt positif tantôt négatif, on aurait pu penser à écrire l'exposant
dans la
Ce n'est pas le cas. Les structures internes des machines numériques
s'accomodent mieux de la convention suivante.
Soit le nombre entier algébrique mesurant le déplacement de la virgule
Soite la valeur de l'exposant, on pose :
valeur de l'exposant considéré comme entier positif
déplacement algébrique de la virgule
ou
6. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 6/9
(le décalage ou bias) est une constante de valeur :
Traduisons en binaire format flottant simple précision
le nombre : (écrit ici en décimal)
Occupons-nous d''abord de sa valeur absolue 1039,0.
Pour traduire ce nombre (il est entier dans ce premier exemple) en binaire
nous passons par son écriture hexadécimale :
1039 décimal = 40F héxadécimal = 0000 0100 0000 1111binaire
Nous constituons la partie fractionnaire :
0000 0100 0000 1111 = 1, . 210
1,00 0000 1111 =
1,00 0000 1111 0000 0000 0000 0
Rangé autrement :
1,000 0001 1110 0000 0000 0000
Partie fractionnaire sur 23 bits =
000 0001 1110 0000 0000 0000
Nous constituons le décalage IEEE en simple précision 8 bits : 28 - 1 - 1 =
Nous constituons l'exposant : = 10 + décalage =
137 décimal = 1000 1001 binaire
Voici le résultat : bit de signe - exposant - partie fractionnaire
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
En héxadécimal
Le bit de signe (bit b31) positionné à 1 indique un nombre réel négatif !
L'opposé de -1039,0, soit 1039,0, s'obtient en mettant le bit de signe b31 à 0
+ 1039,0 se code en héxadécimal
Traduisons en binaire format flottant simple précision
le nombre : (écrit ici en décimal)
Occupons-nous d''abord de sa valeur absolue 6,625
Traduisons ce nombre en binaire :
6,625 décimal = 110,1010 binaire
c.f. " Virgule fixe" :
Nous mettons ce nombre sous la forme :
110,1010 = 1, . 22
1,101010 = 1,1010 1000 0000 0000 0000 000
partie fractionnaire sur 23 bits =
Nous rappelons le décalage IEEE en simple précision 8 bits : 28 - 1 - 1 =
7. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 7/9
Nous constituons l'exposant : = 2+ décalage =
129 décimal = 1000 0001 binaire
Voici le résultat : bit de signe - exposant - partie fractionnaire
Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
En héxadécimal C0 D4 00 00
Le bit de signe (bit b31) positionné à 1 indique un nombre réel négatif !
L'opposé de - 6,625, soit + 6,625, s'obtient en mettant le bit de signe b31 à 0
+ 6,625 se code en héxadécimal
= valeur de l'exposant dans l'implémentation IEEE
= déplacement de la virgule pour rétablir le nombre.
= = Décalage (bias)
En rouge les diverses valeurs numériques décimales pour n = 8 bits
valeur pour laquelle le décalage est .
E 0 1 127 128 254 255
D -127 -126 0 1 127 128
128 valeurs D <= 0 128 valeurs D > 0
Comme nous allons le voir, les colonnes extrêmes grisées de ce taleau
correspondent à des nombres d'exception.
La règle de formation de la partie fractionnaire dans le format IEEE
impose que l'on déplace la virgule à droite du bit à "1" le plus signifiant (de plus grand poids)
dans le nombre binaire initial.
Exemple : 0,001 0000 1110 sera transformé en:1, 0000 1110 x 2-3
Cette méthode est inopérante pour un nombre nul.
C'est la raison pour laquelle on est convenu d'attribuer aux positions extrêmes du tableau précédent
des interprétations particulières.
L'ennui est que si on en reste là, ces valeurs représentent déjà un autre nombre.
En effet, suivant notre règle de formation du format IEEE, on rétablit le "1" implicite
et le tableau précédent vous indique un déplacement de - B.
Ce n'est autre que : 1,000...x 2-B
D'où la règle : ( étant la partie fractionnaire)
(n'oubliez pas le bit de
signe)
C'est la raison pour laquelle nous avons grisé la colonne la plus à gauche du précédent tableau.
8. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 8/9
Il est indispensable que le format d'enregistrement d'un nombre
puisse mémoriser une impossibilité de calcul ou un résultat infini
survenus lors de son calcul..
On se sert pour cela des nombres correspondant à la colonne la plus à droite du tableau précédent.
C'est-à-dire pour :
(Max de E)
(±) Nommés en informatique.
( , voir ci-dessous)
N'oublions pas que ces représentations binaires
sont directement traitées par des ordinateurs qui n'éprouvent aucune difficulté à déceler
et traiter ces exceptions.
Le format est souvent utilsé pour les programmes
pour enregistrer une mauvaise saisie d'un nombre comme par exemple : 12,45U.
Le format est souvent utilisé pour enregistrer le résultat d'une opération
telle qu'une division par zéro.
E 1 2 127 128 253 254
D -126 -125 0 1 +126 +127
En valeur absolue :
Obtenus pour et
Obtenus pour et
Comme lindique un tableau précédent, ils correspondent à
On doit interpréter ces nombres comme ayant une
et une .
Même le déplacement D est réattribué.
On ne prendra pas la valeur D = - B = - ( 2n-1-1 )
comme on aurait pu l'induire de l'observation du tableau,
mais la valeur par mesure de continuité avec les nombres normalisés.:
avec
Exemple du format IEEE 32 bits
L'exposant a n = 8 bits, et D = -126
9. 28/10/2016 Nombres réels en binaire - APerezMas
http://arsene.perez-mas.pagesperso-orange.fr/numeration/reels.htm 9/9
---
Valeur absolue maxima d'un nombre dénormalisé :
Val. abs. max. = 0,1× 2 -126 = 2 -127 =
5,8774717541114375398436826861112e-39
---
Valeur absolue minima d'un nombre dénormalisé :
Val. abs. min. = 0,000...001 × 2 -126
La partie fractionnaire ayant 23 bits dans ce format,
0,000...001 = 2 -23
Val. abs. min. = 2 -23 × 2 -126 = 2 -149 =
1,4012984643248170709237295832899e-45
J'arrête là pour aujourd'hui
Numération binaire et hexadécimale
Nombres Binaires naturels
Nombres Binaires relatifs
Représentation des Nombres réels
Représentation de caractères
Représentation d'états physiques
Représentation de grandeurs analogiques
Accueil
du Site