Heim > Backend-Entwicklung > C++ > Bitoperationen in C++ und ihre Anwendungskenntnisse

Bitoperationen in C++ und ihre Anwendungskenntnisse

WBOY
Freigeben: 2023-08-22 12:39:17
Original
1717 Leute haben es durchsucht

Bitoperationen in C++ und ihre Anwendungskenntnisse

Bitweise Operationen in C++ sind eine von Programmierern häufig verwendete Berechnungsmethode. Durch die Verwendung bitweiser Operationen zur Datenverarbeitung können einige komplexe Rechenaufgaben effizienter erledigt werden. In diesem Artikel werden gängige Bitoperationssymbole in C++ und ihre Anwendungstechniken sowie einige Beispiele vorgestellt, die in der tatsächlichen Entwicklung verwendet werden können.

  1. Bitweise Operationssymbole

C++ bietet sechs bitweise Operationssymbole, die mit binären Bits arbeiten können, von denen vier bitweise Operatoren und die anderen beiden Schiebeoperatoren sind. Die Symbole für die bitweise Operation lauten wie folgt:

& Bitweise UND-Verknüpfung: Das Ergebnis ist 1, wenn beide Binärbits 1 sind, andernfalls ist es 0.

|. Bitweise ODER-Verknüpfung: Das Ergebnis ist 0, wenn beide Binärbits 0 sind, andernfalls ist es 1.

^ Bitweise XOR-Operation: Wenn zwei Binärbits gleich sind, ist das Ergebnis 0, und wenn die beiden Binärbits unterschiedlich sind, ist das Ergebnis 1.

~ Bitweise Negationsoperation: Negieren Sie das Binärbit, dh 0 wird zu 1 und 1 wird zu 0.

Die Symbole für die Schiebeoperation lauten wie folgt:

Rechtsverschiebungsoperation: Verschieben Sie die Binärzahl um die angegebene Anzahl von Stellen nach rechts und füllen Sie die hohen Bits mit 0 oder 1 (je nachdem, ob die ursprüngliche Zahl positiv oder negativ ist).
  1. Anwendungsfähigkeiten

Bitoperationen werden häufig in Computeroperationen auf niedriger Ebene verwendet. Viele effiziente Algorithmen können durch einige clevere Bitoperationstechniken realisiert werden. Hier sind einige häufig verwendete Techniken:

2.1 Bestimmen der Parität

Wenn bei einer Binärzahl die letzte Ziffer 1 ist, ist die Zahl ungerade und umgekehrt. Daher können wir die Parität einer Zahl durch Bitoperationen bestimmen.

Wenn für jede ganze Zahl n das Ergebnis von n & 1 0 ist, bedeutet dies, dass n eine gerade Zahl ist, andernfalls ist es eine ungerade Zahl. Zum Beispiel:

int n = 5;
if( n & 1 ){

cout << "奇数" << endl;
Nach dem Login kopieren

}
else {

cout << "偶数" << endl;
Nach dem Login kopieren

}

2.2 Tauschen Sie die Werte zweier Zahlen aus.

Tauschen Sie die Werte zweier Variablen Im Allgemeinen besteht die Methode darin, eine dritte Variable zu verwenden, um den Wert einer der Variablen zu speichern, und ihr dann den Wert der anderen Variablen zuzuweisen. Die Verwendung von Bitoperationen erfordert jedoch keinen zusätzlichen Speicherplatz, sondern kann direkt durch Bit-XOR-Operationen implementiert werden, das heißt:

int a = 10, b = 20;
b = b ^ a;
a = a ^ b;

Nach der Ausführung beträgt der Wert der Variablen a 20, der Wert der Variablen b 10 und die Werte der beiden Variablen werden vertauscht.

2.3 Die Anzahl der Einsen in Binärzahlen

Bei der Berechnung der Anzahl der Einsen in Binärzahlen können Sie die &-Operation + Rechtsverschiebung verwenden, um sie einzeln zu akkumulieren und zu lösen. Die spezifische Implementierungsmethode ist wie folgt:

int countOne(unsigned int n){

int count = 0;
while (n != 0){

   if (n & 1 == 1){
       count++;
   }
   n = n >> 1; //右移一位
Nach dem Login kopieren

}

return count;
}

2.4 Holen Sie sich die i- Bit in Binärzahl

Wir können die Linksverschiebungsoperation verwenden, um die Zahl 1 um i - 1 Bits nach links zu verschieben, und dann die bitweise UND-Operation & verwenden, um das i-te Bit in der Binärzahl zu erhalten. Die spezifische Implementierungsmethode lautet wie folgt:

bool getBit(unsigned int n, int i){

return (n & (1 << i)) !=0 ;
Nach dem Login kopieren

}

2.5 Setze das i-te Bit in der Binärzahl auf 1

Verschiebe die Zahl um 1 nach links i Bits und verschieben Sie dann diese Binärzahl. Führen Sie eine bitweise ODER-Operation für die Zahl und die Originalzahl durch, um das i-te Bit in der Originalzahl auf 1 zu setzen.

unsigned int setBit(unsigned int n, int i){

return n | (1 << i);
Nach dem Login kopieren

}

2.6 Setzen Sie das i-te Bit in der Binärzahl auf 0

Verschieben Sie die Zahl 1 um i Bits nach links, dann invertieren und zusammenführen die Binärzahl Führen Sie eine bitweise UND-Verknüpfung mit der Originalzahl durch, um das i-te Bit in der Originalzahl auf 0 zu setzen.

unsigned int clearBit(unsigned int n, int i){

return n & ~(1 << i);
Nach dem Login kopieren

}

    Anwendungsbeispiele
Bit-Operationen haben auch viele Anwendungen in der tatsächlichen Entwicklung, die durch Byte-Bit-Operationen effizienter erledigt werden können. Beispielsweise werden bei der Bildverarbeitung die Pixel des Bildes häufig binärisiert, die Ober- und Untergrenze auf 0 und 255 festgelegt und der Zielpixelwert auf 0 oder 255 geändert. Eine effiziente Verarbeitung kann mithilfe von Bitoperationen erreicht werden Das Codebeispiel lautet wie folgt:

for (int i = 0; i < img.rownum(); i++){

for (int j = 0; j < img.colnum(); j++){        
    if (img.at(i,j) < threshold){
        img.at(i,j) = 0; //设为0
    }
    else {
        img.at(i,j) = 255; //设为255
    }
}
Nach dem Login kopieren
}

Durch die Verarbeitung von Binärziffern können auch viele effiziente Algorithmen und Datenstrukturen implementiert werden. wie Bitmaps, Hash-Tabelle usw.

Kurz gesagt, Bitoperationen sind ein leistungsstarkes Werkzeug und werden häufig in der Programmierung verwendet. Kenntnisse in Bitoperationssymbolen und -techniken können eine aktive Rolle bei der Implementierung effizienter Algorithmen und Datenstrukturen und der Verbesserung der Programmoperationseffizienz spielen.

Das obige ist der detaillierte Inhalt vonBitoperationen in C++ und ihre Anwendungskenntnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage