Überprüfen des Bitstatus ohne Verschiebung oder Maskierung
Bei der Manipulation von Bits ist es häufig erforderlich, den Status eines bestimmten Bits innerhalb einer Ganzzahlvariablen zu überprüfen . Betrachten Sie das folgende Beispiel:
int temp = 0x5E; // in binary 0b1011110
Wir möchten feststellen, ob Bit 3 in der binären Darstellung von temp auf 1 oder 0 gesetzt ist.
Eingebaute Funktion?
Es stellt sich die Frage: Gibt es eine integrierte Funktion, die diesen Vorgang ausführt, ohne auf Bitverschiebung zurückgreifen zu müssen? Maskierung?
Benutzerdefiniertes Makro in C
In C gibt es keine native Lösung. Sie können jedoch ein Makro erstellen, um den Vorgang zu vereinfachen:
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
wobei var die zu prüfende Ganzzahl und pos die Bitposition ist (0-indiziert, beginnend mit dem Bit ganz rechts).
Um das 3. Bit vom rechten Ende zu überprüfen:
CHECK_BIT(temp, 2)
Std::bitset in C
In C können Sie die Klasse std::bitset nutzen:
std::bitset<32> bits(temp); if (bits.test(3)) { // Bit 3 is set }
Bits stellt hier die binäre Darstellung von temp dar und bits.test(3) überprüft den Wert des 3. Bits.
Das obige ist der detaillierte Inhalt vonWie kann ich den Status eines Bits überprüfen, ohne es zu verschieben oder zu maskieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!