"<<"-Operator
-
also
int main(int argc, char* argv[]) { int x = 1; // x = 00000000000000000000000000000001 x = x<<1; // x = 00000000000000000000000000000010 printf("%d\n",x); // 2 x = x>>1; // x = 00000000000000000000000000000001 printf("%d\n",x); // 1 system("PAUSE"); return 0; }alles klar?
-
way schrieb:
Hallo,
was macht eigentlich der "<<"-Operator?Beispiel:
int Peter(unsigned int Lustig) { return Lustig<<5; }Danke im Voraus.
Das hängt vom Typen ab, für den << aufgerufen wird.
-
way schrieb:
was macht eigentlich der "<<"-Operator?
Wie bitshift schon geschrieben hat, bits verschieben, allerdings nur für die eingebauten Datentypen. Was das im Einzelnen bedeutet steht im C++-Buch/Tutorial deiner Wahl.
Für alle anderen Datentypen hängts davon ab mit welcher Semantik der Operator überladen worden ist. Bei den Streams der Standardbibliothek dient er z.B. dazu, eine Variable in den Stream zu schreiben. Steht aber auch im Buch/Tutorial deiner Wahl...Siehe auch hier, Punkt 3.4 : http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html
-
pumuckl schrieb:
[...]Wie bitshift schon geschrieben hat, bits verschieben, allerdings nur für die eingebauten Datentypen[...]
Genauer gesagt, nur für eingenbaute ordinale Typen.
-
Ok, vielen Dank ersteinmal. Doch eine Frage hätte ich da noch. Wird der fundamentale Wert denn nun verändert oder kann man sich das so vorstellen, dass die Zustände im Dualenzahlensystem verschoben werden? Weil dann hätte man ja völlig andere Werte...
Sprich:
int x = 2; //: 128 64 32 16 8 4 2 1 ================================== 0 0 0 0 0 0 1 0Das die Position von 1 nach "<<" geshiftet wird? Dann hätte man ja x = 4. Oder rechnet sich der alte Zustand dann noch dazu? Sprich: x = 6?
Wäre mal interessant zu wissen, wenn man mal nach Pornos googlet, findet man später nur noch Bockmist zum gewünschten Thema.
-
Wenn du den "<<" Operator verwendest ändert sich x garnicht.
-
Das die Position von 1 nach "<<" geshiftet wird?
Anders gesagt: Wenn die Position 1 mal "nach links" geshiftet wird:
int x = 2;
x << 1;
-
Dann ändert sich x immer nocht nicht...
-
way schrieb:
Das die Position von 1 nach "<<" geshiftet wird?
Anders gesagt: Wenn die Position 1 mal "nach links" geshiftet wird:
int x = 2;
x << 1;Was passiert denn mit x, wenn Du schreibst
int x = 2; x + 1;Wie sieht x danach aus?
-
way schrieb:
Das die Position von 1 nach "<<" geshiftet wird?
Anders gesagt: Wenn die Position 1 mal "nach links" geshiftet wird:
int x = 2;
x << 1;Das sieht man an bitshifts Post, wenn man die Kommenatre beachtet, und ein kleines dreizeiliges Programm kann dir die Antwort auch geben. Ein kleines Bisschen Eigeninitiative wäre dann doch wünschenswert...
-
x<<2?
EDIT:
Ich bin nicht an meinem Heim-PC. Werde es daheim ausprobieren.Danke.
-
way, es gibt auch noch den
operator<<=bzw.operator>>=. Das ist wahrscheinlich eher, was du suchst.