Bitweise Operatoren sind bequem zu verwenden und können zu blitzschnellem Code führen. Finden Sie heraus, was sie sind und wie Sie sie verwenden.
Bitweise Operatoren sind solche, die auf einer binären Ebene agieren. Sie sind oft sehr schnell auszuführen und wirken typischerweise auf zwei Operanden.
Sie können bitweise Operatoren verwenden, um Binärzahlen zu manipulieren, Code zu optimieren, Daten zu komprimieren und Techniken für die Grafik- oder Spielprogrammierung zu implementieren. Wie die meisten anderen Programmiersprachen bietet JavaScript eine hervorragende Unterstützung für bitweise Operationen.
Was sind Operatoren?
Die meisten Programmiersprachen verwenden das Konzept eines „Operators“ – ein Symbol, das den Interpreter anweist, eine bestimmte mathematische, relationale oder logische Operation auszuführen.
Da sind viele verschiedene Arten von JavaScript-Operatoren Sie sollten sich bewusst sein, von denen, die wie standardmäßige mathematische Operatoren aussehen, wie z. B. "+", bis hin zu Operatoren, die zwei Werte vergleichen. Bitweise Operatoren sind ein spezieller Satz, der sich mit Binärzahlen befasst.
Bitweiser UND-Operator (&).
Das bitweise AND (&)-Operator vergleicht die entsprechenden Bits von zwei binäre Operanden – Zahlen, die nur 0 und 1 enthalten. Für jedes Eingangsbitpaar ist das entsprechende Ausgangsbit „1“, wenn beide Eingangsbits „1“ oder ansonsten „0“ sind.
Hier ist die Syntax des bitweisen UND-Operators:
a & b
In diesem Beispiel A Und B sind die Operanden, an denen Sie die bitweise Operation ausführen.
So funktioniert der bitweise UND-Operator:
- Die UND-Operation gilt für jedes Paar entsprechender Bits in A Und B von rechts nach links.
- Wenn beide Bits 1 sind, ist das Ergebnis 1. Wenn eines der Bits 0 ist, ist das Ergebnis 0.
- Das Ergebnis ist eine neue Zahl, wobei jedes Bit das Ergebnis der UND-Operation an den entsprechenden Bits darstellt A Und B.
Zum Beispiel:
lassen ein = 50; // 00110010
lassen b = 100; // 01100100lassen Ergebnis = a & b; // 00100000
Konsole.log (Ergebnis); // 32
Im obigen Beispiel A ist dezimal 50, was der Binärzahl 00110010 entspricht, und B ist dezimal 100, was der Binärzahl 01100100 entspricht. Der UND-Operator vergleicht jedes Paar entsprechender Bits von rechts nach links und erzeugt die resultierende Binärzahl 00100000, die dezimal 32 ist.
Bitweiser ODER-Operator (|).
Das bitweise ODER (|)-Operator vergleicht die entsprechenden Bits zweier Operanden und gibt „1“ zurück, wenn eines oder beide Bits „1“ sind, und „0“, wenn beide Bits „0“ sind.
Hier ist die Syntax des bitweisen ODER-Operators:
ein | B
Wo A Und B sind die Operanden der Operation.
Der bitweise OR-Operator (|) funktioniert genauso wie der bitweise AND-Operator. Der einzige Unterschied besteht darin, dass der ODER-Operator „1“ zurückgibt, wenn „eines“ der Bits „1“ ist, und „0“, wenn „beide“ Bits „0“ sind.
Zum Beispiel:
lassen ein = 50; // 00110010
lassen b = 100; // 01100100lassen Ergebnis = ein | B; // 01110110
Konsole.log (Ergebnis); // 118
Im obigen Beispiel vergleicht der bitweise ODER-Operator jedes Bitpaar von rechts nach links (d. h. 0 | 0 = 0, 0 | 1 = 1, 1 | 1 = 1, usw). Die resultierende Binärzahl ist 01110110, was 118 in Dezimalzahl ist.
Bitweiser XOR-Operator (^).
Das bitweise XOR (^)-Operator vergleicht die entsprechenden Bits zweier Operanden und gibt „1“ zurück, wenn einer, aber nicht beide Operanden „1“ ist, und „0“, wenn beide Operanden „1“ oder „0“ sind.
Hier ist die Syntax des bitweisen XOR-Operators:
a^b
Wo A Und B sind die Operanden der Operation.
Der bitweise XOR-Operator funktioniert genauso wie die bitweisen OR- und AND-Operatoren. Der einzige Unterschied besteht darin, dass „1“ zurückgegeben wird, wenn „einer, aber nicht beide“ der Operanden „1“ ist, und „0“, wenn „beide“ der Operanden „1“ oder „0“ sind.
Zum Beispiel:
lassen ein = 50; // 00110010
lassen b = 100; // 01100100lassen Ergebnis = a ^ b; // 01010110
Konsole.log (Ergebnis); // 86
Im obigen Beispiel vergleicht der XOR-Operator jedes Bitpaar von rechts nach links (d. h. 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 1 = 0, usw). Die resultierende Binärzahl ist 01010110, was 86 dezimal ist.
Bitweiser NOT (~)-Operator
Das bitweise NOT (~)-Operator ist ein unärer Operator, der mit einer einzelnen Ganzzahl arbeitet, indem er alle seine Bits invertiert. Mit anderen Worten, es ändert jedes „0“-Bit auf „1“ und jedes „1“-Bit auf „0“.
Hier ist die Syntax des bitweisen NOT-Operators:
~c
Wo C ist der Operand.
Der bitweise NOT-Operator funktioniert, indem er alle Bits eines Operanden invertiert, einschließlich der Vorzeichenbits.
Zum Beispiel:
lassen c = 10; // 00001010
lassen d = -10; // 11110110
Konsole.log(~c); // 11110101
Konsole.log(~d); // 00001001
Im obigen Beispiel invertiert der NOT-Operator alle Bits (d. h. 0 → 1, 1 → 0usw.), einschließlich der Vorzeichenbits.
Linker Umschaltoperator (<
Der Linksschiebeoperator verschiebt die Bits einer gegebenen Zahl nach links. Der Operator nimmt zwei Operanden: die zu verschiebende Zahl und die Anzahl der Bits, um die verschoben werden soll.
Hier ist die Syntax für den Linksverschiebungsoperator:
ein << b
Wo A ist der Operand für den Linksverschiebungsoperator und B ist die Anzahl der Bits, um die der Operator den Operanden verschiebt.
Der Linksverschiebungsoperator verschiebt jedes Bit eines Operanden um die angegebene Anzahl von Positionen nach links und verwirft die nach links verschobenen überschüssigen Bits.
Zum Beispiel:
lassen ein = 50; // 00110010
lassen b = 2;lassen Ergebnis = a << b; // 11001000
Konsole.log (Ergebnis); // 200
Im obigen Beispiel hat der Linksverschiebungsoperator die Dezimalzahl 50 der Binärzahl 00110010 um zwei Stellen verschoben. Der resultierende Binärwert ist 11001000, was 200 als Dezimalzahl entspricht.
Vorzeichenweitergebender Rechtsverschiebungsoperator (>>).
Die vorzeichenausbreitende Rechtsverschiebung (>>) verschiebt die Bits einer Zahl nach rechts, wobei das Vorzeichen der ursprünglichen Zahl erhalten bleibt. Der Operator nimmt zwei Operanden: die zu verschiebende Zahl und die Anzahl der Bits, um die verschoben werden soll.
Hier ist die Syntax für den vorzeichenausbreitenden Rechtsverschiebungsoperator:
a >> b
Wo A der Operand für den Rechtsverschiebungsoperator und ist B ist die Anzahl der Bits, um die der Operator den Operanden verschiebt.
Der vorzeichenausbreitende rechte Verschiebungsoperator funktioniert ähnlich wie der linke Verschiebungsoperator; Der einzige Unterschied in der Funktionsweise besteht darin, dass die Rechtsverschiebung das Vorzeichen beibehält.
Zum Beispiel:
lassen ein = -50; // 11001110
lassen b = 2;lassen Ergebnis = a >> b; // 11110011
Konsole.log (Ergebnis); // -13
Im obigen Beispiel verschob der Rechtsverschiebungsoperator die Dezimalzahl -50 (11001110) um zwei Stellen nach rechts, was zu der Dezimalzahl -13 (11110011) führte.
Unsigned Right Shift (>>>) Operator
Die vorzeichenlose Rechtsverschiebung (>>>)-Operator verschiebt die Bits einer Zahl um eine bestimmte Anzahl von Stellen nach rechts und füllt die leeren Stellen links mit Nullen auf. Der Operator verwirft überschüssige Bits, die er nach rechts verschiebt.
Hier ist die Syntax für den vorzeichenlosen Rechtsverschiebungsoperator:
ein >>> b
Wo A der Operand für den Rechtsverschiebungsoperator und ist B ist die Anzahl der Bits, um die der Operator den Operanden verschiebt.
Der vorzeichenlose Rechtsverschiebungsoperator funktioniert ähnlich wie die Rechtsverschiebung. Im Gegensatz zum Rechtsverschiebungsoperator (>>), behält es das Vorzeichen einer Zahl beim Verschieben nicht bei. Stattdessen behandelt es die Zahl als Ganzzahl ohne Vorzeichen und füllt das Bit ganz links mit einer Null.
Zum Beispiel:
lassen ein = -5; // 11111111 11111111 11111111 11111011
lassen b = 2;lassen Ergebnis = a >>> b; // 00111111 11111111 11111111 11111110
Konsole.log (Ergebnis); // 1073741822
In diesem Beispiel hat der vorzeichenlose Rechtsverschiebungsoperator „-5“ um zwei Stellen nach rechts verschoben, wodurch das Vorzeichen effektiv entfernt wurde und die Dezimalzahl „1073741822“ resultierte.
Die Anwendungen bitweiser Operatoren
Durch die Manipulation einzelner Bits in Binärzahlen können bitweise Operatoren komplexe Funktionen erstellen, die mit herkömmlichen arithmetischen Operationen nur schwer oder gar nicht zu erreichen sind.
Wenn Sie verstehen, wie bitweise Operatoren verwendet werden, können Sie effizientere und leistungsfähigere Webanwendungen erstellen.