Inhaltsverzeichnis:
Video: Programmieren Lernen #15 - bitweise Operatoren 2024
Ein paar C-Programmieroperatoren bieten Datenmanipulation auf der binären Ebene. Die Operatoren sind leicht zu ignorieren, aber nur, wenn ihre wahre Macht und Nützlichkeit nicht geschätzt werden.
Die ~ und! Operatoren
Zwei seltene binäre Operatoren sind das ~ (oder 1er-Komplement) und das! (oder nicht). Ihnen fehlt der Charme der logischen bitweisen Operatoren, aber sie haben einen Platz.
Der 1er-Komplementoperator kippt alle Bits in einen Wert und verwandelt eine 1 in eine 0 und eine 0 in eine 1. Zum Beispiel:
~ 01010011 = 10101100
Die! (NOT) Operator beeinflusst den gesamten Wert - alle Bits. Es ändert einen Wert ungleich null auf 0 und den Wert 0 auf 1:
! 01010011 = 00000000! 00000000 = 00000001
Null und 1 sind die einzigen beiden möglichen Ergebnisse bei der bitweisen Verwendung! Operator.
Sowohl die ~ als auch! Operatoren sind unäre Operatoren - Sie geben einfach einen Wert vor, um die Ergebnisse zu erhalten.
Operator | Name | Typ | Aktion |
---|---|---|---|
& | UND | Bitweise | Masken Bits, setzen einige Bits auf 0 zurück und lassen den Rest
allein |
| | ODER | Bitweise | Legt Bits fest und ändert bestimmte Bits von 0 auf 1 |
^ | XOR | Bitweise | Ändert Bits auf 0, wenn sie übereinstimmen; andernfalls auf 1 |
~ | 1-Komplement | Unary | Kehrt alle Bits um |
~ | NOT | Unary | Ändert Werte ungleich Null auf 0; 0 Werte, bis 1 |
Die Funktion binbin () |
Zwei Anweisungen erklären, was in der Funktion binbin () vor sich geht, um Werte in eine binäre Zeichenfolge zu konvertieren:
bin [x] = n & 0x80? '1': '0'; n << = 1;
Die erste Anweisung führt eine UND-Maske mit dem Wert n aus. Alles bis auf das ganz linke Bit in der Nummer wird verworfen. Wenn dieses Bit gesetzt ist, was zu einer TRUE-Bedingung führt, wird das Zeichen 1 im Array gespeichert. Andernfalls wird das Zeichen 0 gespeichert.
Der Wert wird als 0x80 ausgedrückt. Dies ist eine hexadezimale Schreibweise, eine Abkürzung für binär. Der Hexadezimalwert 0x80 ist gleich 10000000 binär, was die UND-Maske ist. Wenn der Wert 16 anstelle von 8 ist, wird stattdessen 0x8000 verwendet, wodurch eine binäre 16-Bit-Maske erstellt wird.
Die zweite Anweisung verschiebt die Bits im Wert n um eine Stufe nach links. Wenn sich die Schleife dreht und dabei den Wert n durchläuft, wird ein anderes Bit im Wert zur äußersten linken Position verschoben. Dieses Bit wird ausgewertet und die Binärzeichenfolge wird durch Einfügen eines '1' oder '0' Zeichens erstellt.