Einfache boolesche Operatoren für Bit-Flags

7

Ich versuche, mehr darüber in meinem Projekt zu lernen.

Ich habe das zur Zeit im Grunde genommen:

%Vor%

Nun möchte ich etwas komplexere Dinge tun, was ich tun möchte, ist drei Flaggen wie folgt anzuwenden:

%Vor%

Und dann die Flags 0x1 und 0x2 entfernen? Ich dachte, ich könnte etwas wie bitweises NOT (und bitweises AND, um es anzuwenden) anwenden:

%Vor%

Offensichtlich bleiben sie dort oder so oder so, wenn ich nachschaue.

Ich weiß auch nicht, wie man überprüft, ob sie NICHT in den Bit-Flags existieren (damit ich nicht überprüfen kann, ob mein vorheriger Code funktioniert), wäre es etwa so?

%Vor%

Ich kann keine Ressourcen aus meinen kürzlich durchgeführten Suchanfragen finden. Ich bin bereit, dies zu lernen, um andere zu unterrichten. Ich bin wirklich interessiert. Ich entschuldige mich, wenn das verwirrend oder einfach ist.

    
John 16.11.2010, 06:16
quelle

2 Antworten

21
  

Und die zwei davon entfernen? ich dachte   Ich könnte so etwas tun:

%Vor%      

um diese zwei Flags zu entfernen, aber   anscheinend bleiben sie dort oder   so oder so.

Das ist der richtige Weg, um Flags zu entfernen. Wenn Sie printf("%d\n", flags) nach dieser Zeile eingeben, sollte die Ausgabe 4 sein.

  

Ich weiß auch nicht, wie ich das überprüfen kann   Sie existieren NICHT in der Bit-Flagge (so   Ich kann nicht überprüfen, ob mein vorheriger Code   funktioniert), wäre es so etwas wie   das?

%Vor%

Nein:

%Vor%

BEARBEITEN:

Um das Vorhandensein mehrerer Flags zu testen:

%Vor%

Um auf das Fehlen mehrerer Flags zu testen, vergleichen Sie einfach wie zuvor mit 0:

%Vor%     
cdhowie 16.11.2010, 06:19
quelle
11

Ich bin mir nicht sicher, warum Sie denken, dass der Löschvorgang nicht funktioniert.

%Vor%

ist der richtige Weg dazu. Die Operation zum Überprüfen, ob ein Bit nicht gesetzt ist, lautet:

%Vor%

Der, den Sie haben:

%Vor%

ist wahr, wenn ein anderes Bit gesetzt ist, was wahrscheinlich der Grund dafür ist, dass der Löschvorgang nicht funktioniert. Das Problem liegt nicht im Clearing, sondern in der Überprüfung.

Wenn Sie überprüfen möchten, ob alle Bits in einer Gruppe gesetzt sind:

%Vor%     
paxdiablo 16.11.2010 06:20
quelle

Tags und Links