Ich versuche, mehr darüber in meinem Projekt zu implementieren.Einfache boolesche Operatoren für Bit-Flags
ich zur Zeit bekommen haben dies im Grunde:
unsigned char flags = 0; //8 bits
flags |= 0x2; //apply random flag
if(flags & 0x2) {
printf("Opt 2 set");
}
Jetzt habe ich ein wenig komplexer Dinge zu tun, ich will, was ich will drei Flaggen wie dies zu tun, gelten soll:
flags = (0x1 | 0x2 | 0x4);
Und dann entfernen Flags 0x1
und 0x2
von ihm? Ich dachte, ich so etwas wie dies die Anwendung bitweise tun konnte nicht (und bitweise UND es anzuwenden):
flags &= ~(0x1 | 0x2);
Offenbar bleiben sie dort oder etwas so oder so, wenn ich überprüfen.
Ich weiß auch nicht, wie man überprüft, ob sie nicht existieren in den Bit-Flags (so kann ich nicht überprüfen, ob mein vorheriger Code funktioniert), wäre es so etwas?
if(flags & ~0x2)
printf("flag 2 not set");
ich alle Ressourcen nicht aus meiner aktuellen Suchanfragen finden, die diese anwenden, ich bin diese bereit zu lernen, andere zu lehren, ich bin wirklich interessiert. Ich entschuldige mich, wenn das verwirrend oder einfach ist.
Ich war das erste Mal richtig, Danke! – John
Sicher, kein Problem. Bitweise Operatoren machen Spaß. :) – cdhowie
Nun, wie würde ich prüfen, ob zwei Flags ohne boolean gesetzt wurden und? wie 'if (Flags & (0x1 | 0x2))' aber das scheint zu funktionieren, auch wenn ich nur '0x1' setze. – John