La Mantisse est codé sur combien de bit pour le long double?
Pour info, formats des "réels" de la FPU Intel:
Single Double Extended
bits total 32 64 80
bits exposant 8 11 15
bits mantisse 23 52 63
^^
Juste un détail, mais pour l'extended, c'est bien 64.
Si j'avais choisi d'écrire 64, aurions-nous eu droit à "Juste un
précision (bits) 24 53 64
La mantisse est positive, l'exposant "biasé", c.a.d en gros signé
centré sur 0.
C-à-d en gros, non signé, mais on soustrait une valeur constante pour en
obtenir la valeur réele.
qui de ce fait devient signée. C'est du biased, quoi ...
Si vous faites un contrôle du total des bits, n'oubliez pas le bit du
cygne. Et il n'y a pas d'erreur, l'extended a un format un peu
particulier.
Je dirais plutôt que ce sont les float et les double qui ont un format
un peu particulier:-). C'est eux où on ne représente pas le bit de poids
fort de la mantisse (parce que dans un nombre normalisé, il serait
toujours un).
J'imagine que c'est pour le fun, votre remarque. Ne pas représenter un
Mais ce que tu documentes, c'est le hardware.
Non? Avais pas remarqué.
Rien n'oblige un
compilateur de l'utiliser, et en fait, avec VC++ 6.0, j'ai
sizeof(double) == sizeof(long double). Les deux vaut 8, c-à-d donc que
le compilateur utilise le type double de la FPU et pour double et pour
long double.
Ça par contre, ça me troue le c.., je n'avais jamais remarqué. C'est
La Mantisse est codé sur combien de bit pour le long double?
Pour info, formats des "réels" de la FPU Intel:
Single Double Extended
bits total 32 64 80
bits exposant 8 11 15
bits mantisse 23 52 63
^^
Juste un détail, mais pour l'extended, c'est bien 64.
Si j'avais choisi d'écrire 64, aurions-nous eu droit à "Juste un
précision (bits) 24 53 64
La mantisse est positive, l'exposant "biasé", c.a.d en gros signé
centré sur 0.
C-à-d en gros, non signé, mais on soustrait une valeur constante pour en
obtenir la valeur réele.
qui de ce fait devient signée. C'est du biased, quoi ...
Si vous faites un contrôle du total des bits, n'oubliez pas le bit du
cygne. Et il n'y a pas d'erreur, l'extended a un format un peu
particulier.
Je dirais plutôt que ce sont les float et les double qui ont un format
un peu particulier:-). C'est eux où on ne représente pas le bit de poids
fort de la mantisse (parce que dans un nombre normalisé, il serait
toujours un).
J'imagine que c'est pour le fun, votre remarque. Ne pas représenter un
Mais ce que tu documentes, c'est le hardware.
Non? Avais pas remarqué.
Rien n'oblige un
compilateur de l'utiliser, et en fait, avec VC++ 6.0, j'ai
sizeof(double) == sizeof(long double). Les deux vaut 8, c-à-d donc que
le compilateur utilise le type double de la FPU et pour double et pour
long double.
Ça par contre, ça me troue le c.., je n'avais jamais remarqué. C'est
La Mantisse est codé sur combien de bit pour le long double?
Pour info, formats des "réels" de la FPU Intel:
Single Double Extended
bits total 32 64 80
bits exposant 8 11 15
bits mantisse 23 52 63
^^
Juste un détail, mais pour l'extended, c'est bien 64.
Si j'avais choisi d'écrire 64, aurions-nous eu droit à "Juste un
précision (bits) 24 53 64
La mantisse est positive, l'exposant "biasé", c.a.d en gros signé
centré sur 0.
C-à-d en gros, non signé, mais on soustrait une valeur constante pour en
obtenir la valeur réele.
qui de ce fait devient signée. C'est du biased, quoi ...
Si vous faites un contrôle du total des bits, n'oubliez pas le bit du
cygne. Et il n'y a pas d'erreur, l'extended a un format un peu
particulier.
Je dirais plutôt que ce sont les float et les double qui ont un format
un peu particulier:-). C'est eux où on ne représente pas le bit de poids
fort de la mantisse (parce que dans un nombre normalisé, il serait
toujours un).
J'imagine que c'est pour le fun, votre remarque. Ne pas représenter un
Mais ce que tu documentes, c'est le hardware.
Non? Avais pas remarqué.
Rien n'oblige un
compilateur de l'utiliser, et en fait, avec VC++ 6.0, j'ai
sizeof(double) == sizeof(long double). Les deux vaut 8, c-à-d donc que
le compilateur utilise le type double de la FPU et pour double et pour
long double.
Ça par contre, ça me troue le c.., je n'avais jamais remarqué. C'est
Autre précision, qui a peut-être son importance : je suis en C et non
en C++ Objet (pour raison de portabilité encore)
Autre précision, qui a peut-être son importance : je suis en C et non
en C++ Objet (pour raison de portabilité encore)
Autre précision, qui a peut-être son importance : je suis en C et non
en C++ Objet (pour raison de portabilité encore)
typa:
[...]La Mantisse est codé sur combien de bit pour le long double?
Pour info, formats des "réels" de la FPU Intel:
Single Double Extended
bits total 32 64 80
bits exposant 8 11 15
bits mantisse 23 52 63
Juste un détail, mais pour l'extended, c'est bien 64.
Si j'avais choisi d'écrire 64, aurions-nous eu droit à "Juste un
détail, c'est 63 plus un bit d'entier etc." ?
Vous connaissez comme moi quel est l'usage (particulier!) du bit
d'entier, efficace dans un domaine (particulier!) de calcul (les
petits nombres). Il est pertinent et courant (Intel) d'écrire 63 et
non 64.
précision (bits) 24 53 64
La mantisse est positive, l'exposant "biasé", c.a.d en gros signé
centré sur 0.
C-à-d en gros, non signé, mais on soustrait une valeur constante pour
en obtenir la valeur réele.
qui de ce fait devient signée. C'est du biased, quoi ... En fait, la
définition est (partiellement): "on ajoute à la valeur réelle signée
une constante telle que le résultat soit toujours positif".
Si vous faites un contrôle du total des bits, n'oubliez pas le bit
du cygne. Et il n'y a pas d'erreur, l'extended a un format un peu
particulier.
Je dirais plutôt que ce sont les float et les double qui ont un
format un peu particulier:-). C'est eux où on ne représente pas le
bit de poids fort de la mantisse (parce que dans un nombre normalisé,
il serait toujours un).
J'imagine que c'est pour le fun, votre remarque. Ne pas représenter un
bit dont on sait que la valeur est à 1 n'a rien de "particulier",
comme on voit parfois 1/2 écrit ".5" (là, c'est 0 qui est implicite).
En revanche, si vous doutez de la "particularité" de la gestion du bit
d'entier en extended, reportez-vous au data book.
Mais ce que tu documentes, c'est le hardware.
Non? Avais pas remarqué.
En fait, l'OP pose problème de précision. Ça débat autour d'un nombre
de digits significatifs. Je communique "pour info" des données qui
permettent d'accéder (à peu près) par un calcul simple à ce nombre,
pour trois formats normalisés (mais pas au sens du C++), répandus et
issus d'une FPU ayant un certain succès.
Rien n'oblige un compilateur de l'utiliser, et en fait, avec VC++
6.0, j'ai sizeof(double) == sizeof(long double). Les deux vaut 8,
c-à-d donc que le compilateur utilise le type double de la FPU et
pour double et pour long double.
Ça par contre, ça me troue le c.., je n'avais jamais remarqué. C'est
pareil pour VC++7.1 bien entendu. La doc lue en diagonale ne parle
même pas d'un "specific Microsoft (x86)" qui implémenterait un mode
extended en 80 bits. Il est précisé que long double faisait 80 bits en
16-bits x86, mais est équivalent à double (64 bits) en code 32 bits,
en raison d'un choix de compatibilité RISC. Etrange.
kanze@gabi-soft.fr typa:
[...]
La Mantisse est codé sur combien de bit pour le long double?
Pour info, formats des "réels" de la FPU Intel:
Single Double Extended
bits total 32 64 80
bits exposant 8 11 15
bits mantisse 23 52 63
Juste un détail, mais pour l'extended, c'est bien 64.
Si j'avais choisi d'écrire 64, aurions-nous eu droit à "Juste un
détail, c'est 63 plus un bit d'entier etc." ?
Vous connaissez comme moi quel est l'usage (particulier!) du bit
d'entier, efficace dans un domaine (particulier!) de calcul (les
petits nombres). Il est pertinent et courant (Intel) d'écrire 63 et
non 64.
précision (bits) 24 53 64
La mantisse est positive, l'exposant "biasé", c.a.d en gros signé
centré sur 0.
C-à-d en gros, non signé, mais on soustrait une valeur constante pour
en obtenir la valeur réele.
qui de ce fait devient signée. C'est du biased, quoi ... En fait, la
définition est (partiellement): "on ajoute à la valeur réelle signée
une constante telle que le résultat soit toujours positif".
Si vous faites un contrôle du total des bits, n'oubliez pas le bit
du cygne. Et il n'y a pas d'erreur, l'extended a un format un peu
particulier.
Je dirais plutôt que ce sont les float et les double qui ont un
format un peu particulier:-). C'est eux où on ne représente pas le
bit de poids fort de la mantisse (parce que dans un nombre normalisé,
il serait toujours un).
J'imagine que c'est pour le fun, votre remarque. Ne pas représenter un
bit dont on sait que la valeur est à 1 n'a rien de "particulier",
comme on voit parfois 1/2 écrit ".5" (là, c'est 0 qui est implicite).
En revanche, si vous doutez de la "particularité" de la gestion du bit
d'entier en extended, reportez-vous au data book.
Mais ce que tu documentes, c'est le hardware.
Non? Avais pas remarqué.
En fait, l'OP pose problème de précision. Ça débat autour d'un nombre
de digits significatifs. Je communique "pour info" des données qui
permettent d'accéder (à peu près) par un calcul simple à ce nombre,
pour trois formats normalisés (mais pas au sens du C++), répandus et
issus d'une FPU ayant un certain succès.
Rien n'oblige un compilateur de l'utiliser, et en fait, avec VC++
6.0, j'ai sizeof(double) == sizeof(long double). Les deux vaut 8,
c-à-d donc que le compilateur utilise le type double de la FPU et
pour double et pour long double.
Ça par contre, ça me troue le c.., je n'avais jamais remarqué. C'est
pareil pour VC++7.1 bien entendu. La doc lue en diagonale ne parle
même pas d'un "specific Microsoft (x86)" qui implémenterait un mode
extended en 80 bits. Il est précisé que long double faisait 80 bits en
16-bits x86, mais est équivalent à double (64 bits) en code 32 bits,
en raison d'un choix de compatibilité RISC. Etrange.
typa:
[...]La Mantisse est codé sur combien de bit pour le long double?
Pour info, formats des "réels" de la FPU Intel:
Single Double Extended
bits total 32 64 80
bits exposant 8 11 15
bits mantisse 23 52 63
Juste un détail, mais pour l'extended, c'est bien 64.
Si j'avais choisi d'écrire 64, aurions-nous eu droit à "Juste un
détail, c'est 63 plus un bit d'entier etc." ?
Vous connaissez comme moi quel est l'usage (particulier!) du bit
d'entier, efficace dans un domaine (particulier!) de calcul (les
petits nombres). Il est pertinent et courant (Intel) d'écrire 63 et
non 64.
précision (bits) 24 53 64
La mantisse est positive, l'exposant "biasé", c.a.d en gros signé
centré sur 0.
C-à-d en gros, non signé, mais on soustrait une valeur constante pour
en obtenir la valeur réele.
qui de ce fait devient signée. C'est du biased, quoi ... En fait, la
définition est (partiellement): "on ajoute à la valeur réelle signée
une constante telle que le résultat soit toujours positif".
Si vous faites un contrôle du total des bits, n'oubliez pas le bit
du cygne. Et il n'y a pas d'erreur, l'extended a un format un peu
particulier.
Je dirais plutôt que ce sont les float et les double qui ont un
format un peu particulier:-). C'est eux où on ne représente pas le
bit de poids fort de la mantisse (parce que dans un nombre normalisé,
il serait toujours un).
J'imagine que c'est pour le fun, votre remarque. Ne pas représenter un
bit dont on sait que la valeur est à 1 n'a rien de "particulier",
comme on voit parfois 1/2 écrit ".5" (là, c'est 0 qui est implicite).
En revanche, si vous doutez de la "particularité" de la gestion du bit
d'entier en extended, reportez-vous au data book.
Mais ce que tu documentes, c'est le hardware.
Non? Avais pas remarqué.
En fait, l'OP pose problème de précision. Ça débat autour d'un nombre
de digits significatifs. Je communique "pour info" des données qui
permettent d'accéder (à peu près) par un calcul simple à ce nombre,
pour trois formats normalisés (mais pas au sens du C++), répandus et
issus d'une FPU ayant un certain succès.
Rien n'oblige un compilateur de l'utiliser, et en fait, avec VC++
6.0, j'ai sizeof(double) == sizeof(long double). Les deux vaut 8,
c-à-d donc que le compilateur utilise le type double de la FPU et
pour double et pour long double.
Ça par contre, ça me troue le c.., je n'avais jamais remarqué. C'est
pareil pour VC++7.1 bien entendu. La doc lue en diagonale ne parle
même pas d'un "specific Microsoft (x86)" qui implémenterait un mode
extended en 80 bits. Il est précisé que long double faisait 80 bits en
16-bits x86, mais est équivalent à double (64 bits) en code 32 bits,
en raison d'un choix de compatibilité RISC. Etrange.