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.
-
Compilierbares Minimalbeispiel.
Du darfst davon ausgehen, dass der Fehler bei dir liegt, nicht beim bitset.
http://ideone.com/0YY5NePS: Ä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.