Bitshifting?
-
Hi,
wie geht bitschifting? ich weis nur das das mit >> geht, aber was bewirkt das und wofür ist das? Wie benutzt man das und wofür wendet man es an? ist es schnell? Hat wer beispiele?
-
such mal nach tutorials.
Nur kurz:Bitshifting geht so:
Binärzahl:
1000 >> 1 = 0100
-
Bit: Speicherstelle für 0 oder 1.
Man fasst die Bits zusammen, z.B. in 8er-Portionen als Byte oder in einer Ganzzahl als 4 Byte. In diesem Rahmen kann man nach links oder rechts "shiften" (schieben), s.o.siehe: http://home.arcor.de/cpp_kurs/cpp/le03/k1_09_03.htm
Das Shiften innerhalb einer Bitfolge, die als Ganzzahl angesehen wird, kann dann als Multiplizieren mit zwei bzw. Dividieren durch 2 angesehen werden.
Hier ein Beispiel zum Experimentieren:
#include <iostream> #include <conio.h> using namespace std; int main() { int zahl; cout << "Bitte Ganzzahl eingeben: "; cin >> zahl; cout << (zahl << 1) << '\t' << zahl * 2 << endl; cout << (zahl << 3) << '\t' << zahl * 8 << endl; getch(); }
Vor kurzem hat hier jemand ein anderes Beispiel gezeigt:
#include <iostream> #include <conio.h> using namespace std; enum int { EINS = 1; ZWEI = 1<<1; DREI = 1<<2; VIER = 1<<3; } zahl; int main() { int zahl = EINS; cout << EINS << endl; getch(); }
-
#include <iostream> #include <conio.h> using namespace std; enum int { EINS = 1; ZWEI = 1<<1; DREI = 1<<2; VIER = 1<<3; } zahl; int main() { int zahl = EINS; cout << EINS << endl; getch(); }
1 = 1 (0001)
1 << 1 = 2 (0010)
1 << 2 = 4 (0100)
1 << 3 = 8 (1000)
Also ist das irgendwie net ganz richtig.
Es sei denn man will die einzelnen Elemente noch irgendwie kombinieren, aber die Zahlen, die als Name da stehen, werden dadurch nicht repräsentiert.MfG MAV