Heim > Backend-Entwicklung > C++ > Wie kann ich den Status eines Bits überprüfen, ohne es zu verschieben oder zu maskieren?

Wie kann ich den Status eines Bits überprüfen, ohne es zu verschieben oder zu maskieren?

Linda Hamilton
Freigeben: 2024-11-26 11:37:18
Original
374 Leute haben es durchsucht

How to Check a Bit's Status Without Shifting or Masking?

Ü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
Nach dem Login kopieren

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)))
Nach dem Login kopieren

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)
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage