Grundlagen der Bit Manipulation für C-Programmierung
Ein paar Brocken der C-Programmierung Betreiber bieten Datenmanipulation auf der binären Ebene. Die Betreiber sind einfach zu ignorieren, aber nur dann, wenn ihre wahre Macht und Nützlichkeit nicht geschätzt.
Die ~ und! Betreiber
Zwei seltene binäre Operatoren sind die ~ (oder 1-Komplement) und das! (oder nicht). Es fehlt ihnen an den Charme der logischen Bit-Operatoren, aber sie haben einen Platz.
Die 1-Komplement-Operator Flips alle Bits in einem Wert, eine 1 in eine 0 und eine 0 in eine 1. Zum Beispiel Drehen:
~ 01010011 = 10101100
Das ! (NOT) Operator wirkt sich auf den gesamten Wert - alle Bits. Es ändert sich alle Nicht-Null-Wert auf 0, und den Wert 0 bis 1:
!01010011 = 00000000! 00000000 = 00000001
Null und 1 sind die einzigen zwei Ergebnisse möglich, wenn das bitweise mit! Operator.
Sowohl die ~ und! Betreiber einstellige Betreiber - Präfix Sie einfach einen Wert um die Ergebnisse zu erhalten.
Operator | Name | Art | Aktion |
---|---|---|---|
UND | Bitwise | Masken-Bits, das Zurücksetzen einige Bits auf 0 und Verlassen des restalone | |
| | ODER | Bitwise | Setzt bits, Ändern bestimmte Bits von 0 auf 1 |
^ | XOR | Bitwise | Ändert Bits auf 0, wenn sie sonst Match-, auf 1 |
~ | 1-Komplement | Unary | Kehrt alle Bits |
~ | NICHT | Unary | Ändert Werte ungleich Null zu 0- 0 Werte bis 1 |
Das binbin () Funktion |
Zwei Aussagen erklären, was los ist in der binbin () Funktion, um es Werte in eine binäre Zeichenfolge konvertieren:
bin [x] = n 0x80? '1': '0'-n lt; lt; = 1-
Die erste Anweisung führt eine UND-Maske mit dem Wert n. Alle bis das Bit ganz links in der Zahl wird verworfen. Wenn das Bit gesetzt ist, das es eine wahre Bedingung macht, wird das Zeichen 1 sonst in der Array- gespeichert, 0 das Zeichen gespeichert ist.
Der Wert wird als 0x80 ausgedrückt, die hexadezimale Schreibweise ist, eine Art Abkürzung für binary. Die 0x80 Hex-Wert ist gleich 10000000 binär, was das UND-Maske ist. Wenn der Wert 16 Bits anstelle von 8, wird 0x8000 verwendet statt, was eine 16-bit binäre Maske erzeugt.
Die zweite Anweisung verschiebt die Bits im Wert n eine Stufe auf der linken Seite. Da die Schleifen Spins durch den Wert n arbeiten, wird ein anderes Bit in dem Wert der äußersten linken Position verschoben. Das Bit wird ausgewertet und die binäre Zeichenfolge wird durch Einfügen eines '1' oder '0' gebaut.