Bitset shift-operator
-
Hallo,
ich hab eine frage zum shift-operator bei bitsets.
ich hab folgenden code:#include <bitset> #include <iostream> using namespace std; int main() { bitset<8> bits; bits[1].flip(); cout << bits << " => " << bits.to_ulong() << endl; bits << 1; cout << bits << " => " << bits.to_ulong() << endl; // cout << (bits << 1) << " => " << (bits << 1).to_ulong() << endl; return 0; }
und will, dass bits mit zwei potenziert wird. das funktioniert aber nicht so, wie ich es möchte und zwar es passiert nichts bei der funktion bits << 1;
wenn ich aber alles wie im auskommentierten mache, funktioniert es einwandfrei und es wird 4 ausgegeben.
ich wollte fragen, ob mir jemand sagen kann, warum die 2 beim ersten mal nicht potenziert wird.mfg
gucky
-
Das liegt daran, das deine Anweisung ins leere läuft. Sie wird zwar ausgeführt, aber das Ergebnis wird nirgendwo gespeichert.
Richtig wäre:
bits = bits << 1;
-
stimmt ich hab vergessen ein = zu schreiben
bits <<= 1;danke
-
Gucky schrieb:
...
und will, dass bits mit zwei potenziert wird. ...War natürlich nicht dein Problem, aber ein linksseitiges shiften um 1 entspricht einer Multiplikation mit 2 (keine Potenz).
-
ich meinte auch zweierpotenzen, hab es aber nicht geschrieben..