Question

Même si c'est simple, je n'ai pas pu le trouver sur Google.Comme nous le savons, la représentation à virgule flottante prend en charge une plus grande plage de nombres et l'opération est plus lente qu'avec des entiers purs.Nous savons également comment la mantisse et les exposants sont utilisés pour représenter une virgule flottante.Mais ma question est la suivante : disons, dans un système 32 bits, s* b^e la sortie est plus longue que 32 bits ou 32 bits ?(où s=mantisse, b=base,e=exposant)

Était-ce utile?

La solution

Le nombre exact de bits utilisés pour représenter la mantisse et l'exposant des nombres à virgule flottante varie d'un processeur à l'autre, la question dépend donc certainement de l'architecture.

Il existe une norme très dominante : Virgule flottante IEEE, et selon cette question SO connexe tous les principaux processeurs que vous êtes susceptibles de rencontrer aujourd'hui l'implémentent, y compris l'IA32.

Selon Wikipédia, la virgule flottante IEEE nécessite qu'au moins l'un des éléments suivants soit disponible sur toute implémentation :

  • binaire32 :Mantisse de 24 bits (dont 1 bit de signe) et exposant de 8 bits
  • binaire64 :Mantisse de 53 bits (dont 1 bit de signe) et exposant de 11 bits

En supposant que par 32 bits vous entendez le Famille IA 32 (qui n'est qu'une des rares architectures qui utilise 32 bits), alors les registres à virgule flottante peut contenir jusqu'à 80 bits, ce qui signifie que binaire32, binaire64 et un format non CEI 80 bits avec 15 bits d'exposant peuvent tous être pris en charge.Pour différencier les instructions 32 bits et 64 bits, la plupart des assembleurs utilisent des modificateurs de taille comme QWORD ou DWORD.

De plus, outre les implémentations de CPU, les langages peuvent également exiger la conformité à la virgule flottante IEEE.En langage C par exemple, l'Annexe 7 précise que si la macro __STDC_IEC_599__ est défini automatiquement par le compilateur alors float est garanti binaire32 et double binaire64. long double n'est pas fixé pour être IEC, il pourrait donc utiliser 80 bits sur un arch IA32.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top