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.

OperatorNameArtAktion
UNDBitwiseMasken-Bits, das Zurücksetzen einige Bits auf 0 und Verlassen des restalone
|ODERBitwiseSetzt bits, Ändern bestimmte Bits von 0 auf 1
^XORBitwiseÄndert Bits auf 0, wenn sie sonst Match-, auf 1
~1-KomplementUnaryKehrt alle Bits
~NICHTUnaryÄ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.

Menü