La norme indique qu'ils prennent en charge l'échange de données à virgule flottante entre les implémentations. Qu'entend-on ici par "implémentations" ? Et comment cet échange peut-il avoir lieu ?
Réponse
Trop de publicités?La norme, comme beaucoup de normes de programmation, spécifie un ensemble de règles. Tout ce qui suit ces règles est une implémentation de la norme. Selon le résumé de la norme IEEE 754-2008, "Une implémentation d'un système à virgule flottante conforme à cette norme peut être réalisée entièrement en logiciel, entièrement en matériel, ou dans toute combinaison de logiciel et de matériel."
Par exemple, on pourrait, en théorie, concevoir un processeur informatique qui prend en charge de manière native les formats à virgule flottante et qui dispose d'une instruction pour chaque opération IEEE 754. Ou bien vous pourriez écrire un compilateur C qui cible un processeur disposant de certaines opérations en virgule flottante, comme l'addition et la multiplication, mais qui utilise des routines logicielles pour la racine carrée et d'autres opérations. Ou encore, vous pourriez écrire un logiciel qui implémente toutes les opérations IEEE 754 en utilisant uniquement des opérations entières en C, sans dépendre d'aucun matériel spécifique. Chacun de ces logiciels pourrait être une implémentation IEEE 754.
Les comportements à virgule flottante sont spécifiés en grande partie en termes de valeurs mathématiques représentées. Pour les formats arithmétiques, la norme spécifie quels nombres sont représentés, quels sont les résultats des opérations arithmétiques effectuées sur eux, etc. Les formats d'échange vont plus loin ; pour les formats d'échange, la norme spécifie précisément quelles configurations binaires représentent quelles valeurs.
Ainsi, si une implémentation IEEE 754 place une valeur dans un objet à virgule flottante, puis transmet les bits à une autre implémentation, qui peut fonctionner sur un matériel complètement différent, et que cette implémentation de destination restaure ces bits dans un objet à virgule flottante du même format d'échange, l'objet de destination aura la même valeur et le même comportement que l'objet source original. En d'autres termes, les formats d'échange rendent les données portables.
Cette transmission peut se faire par le biais d'un réseau, par le stockage des bits sur un disque qui est ensuite physiquement déplacé vers un autre ordinateur, par l'impression des bits (ou d'une représentation de ceux-ci, comme l'hexadécimal) sur un papier qui est ensuite tapé par un humain, ou par d'autres moyens.
La norme spécifie uniquement le modèle de bit dans une séquence de bits du plus significatif au moins significatif. Elle ne précise pas comment ces bits sont regroupés en octets ni comment ces octets sont ordonnés. Les systèmes d'envoi et de réception doivent donc s'assurer d'envoyer et de recevoir les bits dans le bon ordre.