JavaScript-Bit-Operationen
- Vorherige Seite JS-Deconstruction
- Nächste Seite JS-Reguläre Ausdrücke
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;
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;
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;
JavaScript Bit-Operation NOT (~)
Dezimal | Binär |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Beispiel
var x = ~5;
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;
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;
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;
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); }
Konvertieren Sie Binärsystem in Dezimalsystem
Beispiel
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }
- Vorherige Seite JS-Deconstruction
- Nächste Seite JS-Reguläre Ausdrücke