JavaScript-Bit-Operationen

JavaScript-Bit-Operationen

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 Alle Bits umkehren
<< Linke Verschiebung mit Nullen auffüllen Durch Einfügen von Nullen von rechts nach links verschieben und das linke Bit abwerfen.
>> Signifikante rechte Verschiebung Durch Einfügen einer Kopie des linken Bits von links nach rechts verschieben und das rechte Bit abwerfen.
>>> Rechte Verschiebung mit Nullen auffüllen Durch Einfügen von Nullen von links nach rechts verschieben und das rechte Bit abwerfen.

Beispiel

Operation Ergebnis entspricht Ergebnis
5 & 1 1 0101 & 0001 0001
5 | 1 5 0101 | 0001 0101
5 ^ 1 4 0101 ^ 0001 0100
~ 5 10 ~0101 1010
5 << 1 10 0101 << 1 1010
5 >> 1 2 0101 >> 1 0010
5 >>> 1 2 0101 >>> 1 0010

JavaScript verwendet 32-Bit Bit-Operationen

JavaScript speichert die Zahl als 64-Bit Fließkommazahl, aber alle Bit-Operationen werden als 32-Bit Binärzahlen ausgeführt.

Vor der Ausführung der Bit-Operation konvertiert JavaScript die Zahl in eine 32-Bit vorteilsgerechte Ganzzahl.

Nach der Ausführung der Bit-Operation wird das Ergebnis in einen 64-Bit JavaScript-Zahl umgewandelt.

Der obige Beispiel verwendet 4-Bit unvorteilsgerechte Binärzahlen. Daher gibt ~ 5 10 zurück.

Da JavaScript 32-Bit vorteilsgerechte Ganzzahlen verwendet, gibt JavaScript -6 zurück.

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

Vorteilsgerechte Ganzzahlen verwenden den linkensten Bit als Minuszeichen.

Bit-Operation AND

Wenn bei der Bit-Operation AND auf Paar Stellen geprüft wird, gibt es 1 zurück, wenn beide Stellen 1 sind.

Einzelnes Beispiel:

Operation Ergebnis
0 & 0 0
0 & 1 0
1 & 0 0
1 & 1 1

Vier-Stellen-Beispiel:

Operation Ergebnis
1111 & 0000 0000
1111 & 0001 0001
1111 & 0010 0010
1111 & 0100 0100

Bit-Operation OR

Wenn bei der Bit-Operation OR auf Paar Stellen geprüft wird, gibt es 1 zurück, wenn eine der Stellen 1 ist:

Einzelnes Beispiel

Operation Ergebnis
0 | 0 0
0 | 1 1
1 | 0 1
1 | 1 1

Vier-Stellen-Operation:

Operation Ergebnis
1111 | 0000 1111
1111 | 0001 1111
1111 | 0010 1111
1111 | 0100 1111

Bit-Operation XOR

Wenn bei der Bit-Operation XOR auf Paar Stellen geprüft wird, gibt es 1 zurück, wenn die Stellen unterschiedlich sind:

Einzelnes Beispiel:

Operation Ergebnis
0 ^ 0 0
0 ^ 1 1
1 ^ 0 1
1 ^ 1 0

Vier-Stellen-Beispiel:

Operation Ergebnis
1111 ^ 0000 1111
1111 ^ 0001 1110
1111 ^ 0010 1101
1111 ^ 0100 1011

JavaScript Bit-Operation AND (&)

Wenn alle Stellen 1 sind, gibt die Bit-Operation AND 1 zurück:

Dezimal Binär
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 & 1 00000000000000000000000000000001 (1)

Beispiel

var x = 5 & 1;

Versuchen Sie es selbst

JavaScript Bit-Operation OR (|)

Wenn eine der Stellen 1 ist, gibt die Bit-Operation OR 1 zurück:

Dezimal Binär
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 | 1 00000000000000000000000000000101 (5)

Beispiel

var x = 5 | 1;

Versuchen Sie es selbst

JavaScript Bit-Operation XOR (^)

Wenn die Stellen unterschiedlich sind, gibt XOR 1 zurück:

Dezimal Binär
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 ^ 1 00000000000000000000000000000100 (4)

Beispiel

var x = 5 ^ 1;

Versuchen Sie es selbst

JavaScript Bit-Operation NOT (~)

Dezimal Binär
5 00000000000000000000000000000101
~5 11111111111111111111111111111010 (-6)

Beispiel

var x = ~5;

Versuchen Sie es selbst

JavaScript (Nullbeseitigung) linker Shift (<<)

Dies ist ein linker Shift mit Nullbeseitigung. Eine oder mehrere Nullen werden von rechts hinzugefügt, und die linken Stellen werden entfernt:

Dezimal Binär
5 00000000000000000000000000000101
5 << 1 00000000000000000000000000001010 (10)

Beispiel

var x = 5 << 1;

Versuchen Sie es selbst

JavaScript (signiert) Bit-Operation rechter Shift (>>)

Dies ist ein Shift mit符号beibehaltung. Eine oder mehrere Stellen werden von links hinzugefügt, und die rechten Stellen werden verschoben:

Dezimal Binär
-5 11111111111111111111111111111011
-5 >> 1 11111111111111111111111111111101 (-3)

Beispiel

var x = -5 >> 1;

Versuchen Sie es selbst

JavaScript (Nullbeseitigung) rechter Shift (>>>)

Dies ist ein rechter Shift mit Nullbeseitigung. Eine oder mehrere Nullen werden von links hinzugefügt, und die rechten Stellen werden verschoben:

Dezimal Binär
5 00000000000000000000000000000101
5 >>> 1 00000000000000000000000000000010 (2)

Beispiel

var x = 5 >>> 1;

Versuchen Sie es selbst

32-bit signierte Integer (Binärzahlen)

Ein 32-bit Integer mit nur einem gesetzten Bit ist leicht zu verstehen:

Binärdarstellung Dezimalwert
00000000000000000000000000000001 1
00000000000000000000000000000010 2
00000000000000000000000000000100 4
00000000000000000000000000001000 8
00000000000000000000000000010000 16
00000000000000000000000000100000 32
00000000000000000000000001000000 64

Durch die Erhöhung der Anzahl der Stellen wird das Muster des Binärsystems sichtbar:

Binärdarstellung Dezimalwert
00000000000000000000000000000101 5 (4 + 1)
00000000000000000000000000101000 40 (32 + 8)
00000000000000000000000000101101 45 (32 + 8 + 4 + 1)

Negative Zahlen sind die Zweierkomplement des positiven Binärsystems plus 1:

Binärdarstellung Dezimalwert
00000000000000000000000000000101 5
11111111111111111111111111111011 -5
00000000000000000000000000101000 40
11111111111111111111111111011000 -40
11111111111111111111111111011001 -41

Konvertieren Sie Dezimalsystem in Binärsystem

Beispiel

function dec2bin(dec){
    return (dec >>> 0).toString(2);
}

Versuchen Sie es selbst

Konvertieren Sie Binärsystem in Dezimalsystem

Beispiel

function bin2dec(bin){
    return parseInt(bin, 2).toString(10);
}

Versuchen Sie es selbst