/ / Multiplication sur 32 bits sans utiliser un nombre intermédiaire sur 64 bits - c ++, ieee-754

Multiplication 32 bits sans utiliser un nombre intermédiaire de 64 bits - c ++, ieee-754

Est-il possible de multiplier deux nombres à virgule flottante 32 bits sans utiliser de valeur intermédiaire 64 bits?

Contexte: Dans un nombre à virgule flottante IEEE, 1 bit est consacré au signe, 8 bits sont consacrés à l'exposant et 23 bits sont consacrés à la mantisse. Lors de la multiplication des deux nombres, les mantisses doivent être multipliées séparément. En faisant cela, vous vous retrouverez avec un nombre de 48 bits (puisque le bit le plus significatif de 1 est impliqué). Après avoir reçu un nombre de 48 bits, cette valeur doit être tronquée de 25 bits afin que seuls les 23 bits les plus significatifs soient conservés dans le résultat.

Ma question est que, pour faire cette multiplication commeest, vous aurez besoin d'un nombre 64 bits pour stocker le résultat intermédiaire. Mais, je suppose qu'il existe un moyen de le faire sans utiliser un nombre 64 bits, car les architectures 32 bits n'avaient pas le luxe d'utiliser des nombres 64 bits et ils étaient toujours capables de faire des virgules flottantes 32 bits multiplication des nombres. Alors, comment pouvez-vous faire cela sans utiliser un numéro intermédiaire 64 bits?

Réponses:

0 pour la réponse № 1

De https://isocpp.org/wiki/faq/newbie#floating-point-arith2 :

les calculs en virgule flottante et les comparaisons sont souvent effectués par matériel spécial qui contient souvent des registres spéciaux, et ceux les registres ont souvent plus de bits qu'un double.

Ainsi, même sur une architecture 32 bits, vous disposez probablement de registres de plus de 32 bits pour les opérations en virgule flottante.