Funktion die double in binär umwandelt?



  • Hallo,

    gibt es eine fertige Funktion in C++ die eine Gleitkommazahl (double) in binär umwandelt? Ich habe leider nichts in den FAQ´s noch in der Suche gefunden.



  • In einen String aus 0 und 1? Weißt du, wie du ein long in einen solchen String umwandelst?



  • also eine funktion kenne ich nicht, aber du kannst dir eine schreiben die das für dich übernimmt. DOUBLE is so'ne sache (gleitkomma in binär)...eigentlich kennt binär kein komma, mußt die funktion dann umschreiben/anpassen:

    #include <iostream>
    using namespace std;
    
    long bin;
    bool bit1, bit2, bit3, bit4, bit5, bit6, bit7, bit8;
    
    int main()
    {
      cout << "Umwandlung von 'Dezimalen' in 'Binaeren' Zahlen !!!" << endl;
      cout << "\n";
      cout << "Zahl eingeben (max. 255): ";
      cin >> bin;
      bit1=bin&128;
      cout << bit1;
      bit2=bin&64;
      cout << bit2;
      bit3=bin&32;
      cout << bit3;
      bit4=bin&16;
      cout << bit4;
      bit5=bin&8;
      cout << bit5;
      bit6=bin&4;
      cout << bit6;
      bit7=bin&2;
      cout << bit7;
      bit8=bin&1;
      cout << bit8;
    }
    

    diese funktion rechnet die ganzkommawerte in binär um. höchste ganzkommazahl ist in diesem fall max. 255 (erweiter dir es wie du es brauchst, ist NUR ein ansatz)

    :xmas1: merry christmas :xmas2:



  • AFAIK stellt Standard C++ so eine Funktion nicht zur Verfügung. Musst die selber eine schreiben oder vielleicht mal in andere Bibiotheken schauen, ob die das anbieten.

    Falls du es dir selberschreiben willst, vielleicht das hier als Starthilfe: (hat mir auf jedenfall geholfen!)
    http://de.wikipedia.org/wiki/Dualsystem

    //Edit: Zu spät... aber habe sowieso was vergessen: :xmas1: :xmas2: (Endlich hab ich drangedacht 🙂 )

    Caipi



  • enno-tyrant schrieb:

    also eine funktion kenne ich nicht, aber du kannst dir eine schreiben die das für dich übernimmt. DOUBLE is so'ne sache (gleitkomma in binär)...eigentlich kennt binär kein komma, mußt die funktion dann umschreiben/anpassen:

    Warum sollte man in einer Darstellung im Dualsystem ein Komma haben wollen?



  • @streamilein:
    weist du wie eine gleitkommazahl im speicher abgebildet ist?

    ist nämlich gar nicht so einfach



  • Wenn du einfach nur stumpf sehen willst, wie der Kram im Speicher steht, sollte das hier ausreichen:

    #include <sstream>
    #include <string>
    
    std::string double_to_binary(double d) {
      char *p = reinterpret_cast<char*>(&d);
      std::stringstream sstr;
    
      for(int i = 0; i < sizeof(double); ++i, ++p)
        for(int j = 7; j > -1; --j)
          sstr << char('0' + (*p >> j & 1));
    
      return sstr.str();
    }
    

    ...allerdings weiß ich beim besten Willen nicht, wozu das gut sein soll...


  • Mod

    edit: müll



  • MaSTaH schrieb:

    enno-tyrant schrieb:

    also eine funktion kenne ich nicht, aber du kannst dir eine schreiben die das für dich übernimmt. DOUBLE is so'ne sache (gleitkomma in binär)...eigentlich kennt binär kein komma, mußt die funktion dann umschreiben/anpassen:

    Warum sollte man in einer Darstellung im Dualsystem ein Komma haben wollen?

    warum will er/sie denn sonst DOUBLE nutzen?? gleitkomma in binär ist NICHT unmöglich, aber eigentlich schwachsinn 👎


Anmelden zum Antworten