Question

Est-ce OK pour envoyer plus de valeurs à double virgule flottante du réseau (ajusté pour l'ordre d'octets correct bien sûr) et de les utiliser de manière interchangeable sur différentes architectures cpu, en particulier i386, MIPS (couple de différents noyaux), powerpc (E300, E500). Aucun matériel très ancien.

Utilisation gcc 4.2.1 comme compilateur avec -Os pour toutes les architectures.

Soi-disant il est IEEE-754 norme partout (est?), Mais comme wikipedia dit:

  

L'IEEE 754-1985 a permis de nombreuses variations dans les implémentations (telles que le codage de certaines valeurs et la détection de certaines exceptions). IEEE 754-2008 a resserré beaucoup d'entre eux, mais quelques variations restent encore (en particulier pour les formats binaires).

Je n'ai pas l'intention de passer autour NaN ou d'autres trucs spéciaux, seulement des nombres décimaux valides.

Était-ce utile?

La solution

Si vous voulez envoyer des représentations de nombres normalisés, vous êtes totalement en sécurité sur une architecture moderne. En cas de doute, consultez le manuel d'architecture. Pour les numéros denormalized vous devez vérifier.

Bien sûr, vous devez être en mesure de dissamble en octets et réassembler à l'autre bout, utilisant l'ordre d'octets correct, mais il semble que vous savez comment faire.

Comme indiqué, vous ne pouvez pas attendre différentes unités centrales pour mettre en œuvre chaque partie de la norme identique, mais ce n'est pas nécessaire.

Conversion de virgule flottante IEEE en ASCII se heurte à des erreurs; il y avait de bons papiers dans les années 1990 par Guy Steele et Will Clinger . Il y avait un followup plus tard le faire plus rapidement par Burger et Dybvig.

Autres conseils

Vous demandez en « Puis-je transférer des données binaires entre les systèmes en toute transparence ». La réponse est oui, tant que les deux systèmes sont d'accord sur le même format. Si vous savez que votre CPU attend, puis vérifiez leurs normes IEEE complience et vous devriez être dans les affaires.

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