Comment puis-je utiliser les opérateurs au niveau du bit sur un “double” sur le C++?

M'a demandé d'obtenir le binaire interne de la représentation de différents types en C. Mon programme fonctionne très bien avec "int", mais je voudrais l'utiliser avec "double" et "float". Mon code ressemble à ceci:

template <typename T>
string findBin(T x) {
string binary;
for(int i = 4096 ; i >= 1; i/=2) {
        if((x & i) != 0) binary += "1";
        else binary += "0";
}
    return binary;
}

Le programme ne parvient pas quand j'essaie d'instancier le modèle à l'aide d'un "double" ou un "float".

Ce que la sortie ne vous attendez lors de l'utilisation d'un lit double et/ou variable?
Rien si le bit est à 1 et à 0 si le bit est à zéro.
Juste quelque chose que je pensais que vous pourriez trouver intéressant: certains systèmes (esp. Linux) ont un ieee754.h-tête avec les syndicats ieee754_float et ieee754_double qui définissent (endian sûr) bitfields pour la lecture de l'exposant mantisse, signe bits (négatif), pas-un-nombre de bits etc.

OriginalL'auteur Juan Pablo Santos | 2011-01-20