Habe Probleme mit std::bitset die ich nicht nachvollziehen kann.



  • Hallo,
    ich habe gerade ein kleines Verstaendnisproblem vielleicht kann mir einer schnell auf die Spruenge helfen.
    Ich moechte eine Zahl des Typs int binaer in einem bitset darstellen.

    int number = 86;
    
    std::bitset<64> cont(number);
    

    So das Problem ist, dass die Binaerzahl die da rauskommt 106 ist und nicht 86.

    Im Bitset steht: 011010100(etc.)

    Kann mir das einer erklaeren?
    Ich werde daraus naemlich nicht schlau der Konstruktor vom bitset Container sollte eine Number nehmen (unsigned long long) und die Zahl dann binaer darstellen.


  • Mod

    Compilierbares Minimalbeispiel.

    Du darfst davon ausgehen, dass der Fehler bei dir liegt, nicht beim bitset.
    http://ideone.com/0YY5Ne

    PS: Ähh, wie kommst du denn an die Zahlen?
    01010110 (86 in binär mit führender Null) ist nämlich umgedreht 01101010 (106 in binär). Hast du die irgendwie händisch aus dem Bitset extrahiert?



  • So das Problem ist, dass die Binaerzahl die da rauskommt 106 ist und nicht 86.

    Liest du vielleicht einfach falsch rum?

    106 = 0110 1010
     86 = 0101 0110
    


  • Hier ist das Beispiel aber ich habe den Fehler schon gefunden.
    Ich habe mir die Sachen im Debug angeguckt und bin davon ausgegangen, das die Zahl bei cont[0] anfaengt was natuerlich falsch ist.

    Im Debug sieht man es umgekehrt, weil Position cont[31]natuerlich der Anfang der Binaerzahl ist.

    Mit anderen Worten im Debug: 01101010 muss man natuerlich 01010110 lesen.

    Mein Fehler sorry.

    #include <bitset>
    #include <iostream>
    int main()
    {
    	int number = 86;
    	std::bitset<32> cont(number);
    
    	std::cout << cont;
    
    	system("PAUSE");
    }
    


  • linksrechts schrieb:

    So das Problem ist, dass die Binaerzahl die da rauskommt 106 ist und nicht 86.

    Liest du vielleicht einfach falsch rum?

    106 = 0110 1010
     86 = 0101 0110
    

    Ja genau. 🙄 Ist mir dann auch aufgefallen.


Anmelden zum Antworten