Sinn von Bitoperatoren?
-
Was ist eigentlich der Sinn von Bitoperatoren? Zwar verstehe ich die Syntax, doch ich sehe den Nutzen davon nicht.
-
manchmal brauch mans halt z.b. wenn man mit geräten kommuniziert
-
Zb. wenn man ne Bitmap aus ner Datei in eine RGB Array lädt.
-
Manche Funktionen (z.B. aus der Win32 API) verlangen dass ein bestimmtes Bit gesetzt wird wenn man irgendwas machen will. Oder sie geben einen int-Wert zurück und bestimmte Bits darin haben eine bestimmte Bedeutung. Dafür braucht man die Bitoperationen.
-
sagen wir mal du hast den Farbwert(32bit):
0xaa bb cc dd
t r g b
r o r l
a t ü a
n n u
s
p
a
r
e
n
zWas machst du wenn du nur den grünwert "herausfiltern willst"?
AND verknüpfung! &#define MASKE 0x0000ff00 unsigned long Farbwert = 0xaabbccdd; unsigned byte Gruenwert = Farbwert & MASKE;
-
alex89ru schrieb:
#define MASKE 0x0000ff00 unsigned long Farbwert = 0xaabbccdd; unsigned byte Gruenwert = Farbwert & MASKE;Bissl schieben musst auch noch

unsigned byte Gruenwert = ( Farbwert & MASKE) >> 8;Kurt
-
Aja , stimmt typecasting von long zu byte...
-
alex89ru schrieb:
Aja , stimmt typecasting von long zu byte...

-
Ich weiß, habs schiesse ausgedrückt!
Ich meine von 0x0000dd00 auf 0x000000dd...ist kein typecasting
-
Noch ein Beispiel: Wenn du 800 Bitflags (also bools) speichern willst, kannst du natürlich schreiben:
bool flags[800];Jedes dieser falgs verbraucht 1 Byte speicher, zusammen also 800 Byte. Auf nem 1GB-Arbeitspeicher-Rechner ist das nicht schlimm. Du kannst das ganze aber auf 100 Byte reduzieren, wenn du sowas hinschreibst:
unsigned char flags[100];Wenn du plötzlich auf nem Mikrocontroler mit wenigen KB Ram arbeitest, bringt dir das ne Menge. Und für den Zugriff brauchst du dann bit-Operationen, weil du jedes Bit persönlich ansprechen musst.