JavaScript - Bitwise Operators

Hallo zusammen, zukünftige Codewizarden! Heute tauchen wir ein in die faszinierende Welt der JavaScript-Bitwise-Operatoren. Jetzt weiß ich, was ihr denkt: "Bitwise was?" Keine Sorge! Bis zum Ende dieses Unterrichts werdet ihr Bits wie ein Profi manipulieren können. Also lasst uns gemeinsam diese binäre Abenteuerreise antreten!

JavaScript - Bitwise Operators

JavaScript Bitwise Operators

Bitwise-Operatoren sind spezielle Werkzeuge in JavaScript, die es uns ermöglichen, mit Zahlen auf der Binärebene zu arbeiten. Das bedeutet, wir beschäftigen uns mit 1ern und 0ern, genau wie Computer intern. Es mag abschreckend klingen, aber versprecht mir, es ist actually quite fun, wenn man den Dreh raus hat!

Bevor wir ins Detail gehen, werfen wir einen Blick auf alle Bitwise-Operatoren, die wir behandeln werden:

Operator Name Beschreibung
& AND Setzt jedes Bit auf 1, wenn beide Bits 1 sind
| OR Setzt jedes Bit auf 1, wenn eines der beiden Bits 1 ist
^ XOR Setzt jedes Bit auf 1, wenn nur eines der beiden Bits 1 ist
~ NOT Kehrt alle Bits um
<< Linksshift Verschiebt nach links, indem 0er von rechts hinzugefügt werden
>> Rechteshift Verschiebt nach rechts, indem Kopien des linksten Bits von links hinzugefügt werden
>>> Zero-fill Rechteshift Verschiebt nach rechts, indem 0er von links hinzugefügt werden

Nun, lassen sie uns diese einzeln durchgehen!

JavaScript Bitwise AND (&) Operator

Der Bitwise AND-Operator ist wie ein sehr strenger Türsteher in einem exklusiven Club. Er lässt nur ein 1 durch, wenn beide Eingaben 1 sind. Andernfalls ist es eine 0. Sehen wir uns das in Aktion an:

let a = 5;  // 0101 in Binär
let b = 3;  // 0011 in Binär
console.log(a & b);  // 0001 in Binär, was 1 in Dezimal ist

In diesem Beispiel vergleichen wir 5 (0101) und 3 (0011) biteweise. Nur das rechte Bit ist in beiden Zahlen 1, daher ist das das einzige 1, das durchkommt. Das Ergebnis ist 0001, was 1 in Dezimal ist.

JavaScript Bitwise OR (|) Operator

Der Bitwise OR-Operator ist wie ein viel toleranterer Türsteher. Wenn eine der Eingaben 1 ist, lässt er sie durch. Sehen wir uns an, wie es funktioniert:

let a = 5;  // 0101 in Binär
let b = 3;  // 0011 in Binär
console.log(a | b);  // 0111 in Binär, was 7 in Dezimal ist

Hier erhalten wir 1, wo auch immer 5 oder 3 eine 1 hat, was in 0111 resultiert, was 7 in Dezimal ist.

JavaScript Bitwise XOR (^) Operator

Der XOR-Operator ist wie ein skurriles Partyspiel, bei dem du nur rein darfst, wenn du eine Mütze oder einen Schal trägst, aber nicht beides! Er gibt 1 zurück, nur wenn die Bits unterschiedlich sind. Schaut mal hier:

let a = 5;  // 0101 in Binär
let b = 3;  // 0011 in Binär
console.log(a ^ b);  // 0110 in Binär, was 6 in Dezimal ist

Wir erhalten 1, wo die Bits unterschiedlich sind (zweites und drittes von rechts), was in 0110 resultiert, oder 6 in Dezimal.

JavaScript Bitwise NOT (~) Operator

Der NOT-Operator ist wie der opposite day - er kehrt alle Bits um. Aber es gibt einen Haken! In JavaScript kehrt er auch das Vorzeichen um und zieht 1 ab. Sehen wir uns das an:

let a = 5;  // 0101 in Binär
console.log(~a);  // -6 in Dezimal

Das Ergebnis könnte euch überraschen! Es liegt daran, dass JavaScript Zweierkomplement für negative Zahlen verwendet. Also ist ~5 actually -6.

Bitwise Linksshift (<<) Operator

Der Linksshift-Operator ist wie ein Förderband, das Bits nach links bewegt und 0er auf der rechten Seite hinzufügt. Jeder Shift verdoppelt effektiv die Zahl:

let a = 5;  // 0101 in Binär
console.log(a << 1);  // 1010 in Binär, was 10 in Dezimal ist
console.log(a << 2);  // 10100 in Binär, was 20 in Dezimal ist

Seht ihr, wie 5 mit einem Shift 10 wird und mit zwei Shifts 20? Es ist wie Magie!

Bitwise Rechteshift (>>) Operator

Der Rechteshift-Operator macht das Gegenteil, er bewegt Bits nach rechts. Er halbiert effektiv die Zahl (runter gerundet):

let a = 5;  // 0101 in Binär
console.log(a >> 1);  // 0010 in Binär, was 2 in Dezimal ist

5 geteilt durch 2 ist 2,5, aber wir runden runter auf 2.

Bitwise Rechteshift mit Zero (>>>) Operator

Dieser Operator ist ähnlich zu >>, aber er füllt immer mit 0ern von links, selbst für negative Zahlen:

let a = -5;  // 11111111111111111111111111111011 in Binär (32-Bit)
console.log(a >>> 1);  // 01111111111111111111111111111101 in Binär, was 2147483645 in Dezimal ist

Das ist ein bisschen tricky! Es wird hauptsächlich verwendet, wenn du eine Zahl als unsgnigned behandeln musst.

Und da habt ihr es, Leute! Ihr habt gerade eure ersten Schritte in die Welt der Bitwise-Operationen gemacht. Diese Operatoren mögen jetzt etwas abstrakt erscheinen, aber sie sind unglaublich nützlich für Aufgaben wie das Arbeiten mit Binärdaten, das Erstellen von Hash-Funktionen oder die Optimierung bestimmter Algorithmen.

Denkt daran, Übung macht den Meister. Versucht, mit diesen Operatoren herumzuspielen, und bald werdet ihr Bits wie ein Profi durchbeißen! Frohes Coden und mögen die Bits mit euch sein!

Credits: Image by storyset