JavaScript bitweise


Inhaltsverzeichnis

    Inhaltsverzeichnis anzeigen


Bitweise JavaScript-Operatoren

&

Logik UND. Setzt jedes Bit auf 1, wenn beide Bits 1 sind

|

Logik ODER. Setzt jedes Bit auf 1, wenn eines von zwei Bits 1 ist

^

Logisches XOR. Setzt jedes Bit auf 1, wenn nur eines von zwei Bits 1 ist

~

Logik NICHT. Invertiert alle Bits

<<

Linksverschiebung mit Nullfüllung. Verschiebt sich nach links, indem von rechts Nullen eingeschoben werden und die Bits ganz links wegfallen

>>

Rechtsverschiebung signiert. Verschiebt sich nach rechts, indem Kopien des ganz linken Bits von links hineingeschoben werden und die ganz rechten Bits durchgelassen werden runterfallen

>>>

Nullfüllung nach rechts verschieben. Verschiebt sich nach rechts, indem Nullen von links eingeschoben werden, und lässt die Bits ganz rechts wegfallen

Beispiele

Operation Result Same as Result
5 & 1 1 0101 & 0001  0001
5 | 1 5 0101 | 0001  0101
~ 5 10  ~0101  1010
5 << 1 10 0101 << 1  1010
5 ^ 1 4 0101 ^ 0001  0100
5 >> 1 2 0101 >> 1  0010
5 >>> 1 2 0101 >>> 1  0010

JavaScript verwendet bitweise 32-Bit-Operanden

JavaScript speichert Zahlen als 64-Bit-Gleitkommazahlen, jedoch alle bitweise Operationen werden mit 32-Bit-Binärzahlen durchgeführt.

Bevor eine bitweise Operation ausgeführt wird, konvertiert JavaScript Zahlen in 32 Bit ganze Zahlen mit Vorzeichen.

Nachdem die bitweise Operation ausgeführt wurde, wird das Ergebnis zurück in 64-Bit-JavaScript konvertiert Zahlen.

In den obigen Beispielen werden vorzeichenlose 4-Bit-Binärzahlen verwendet. Aus diesem Grund gibt ~ 5 10 zurück.

Da JavaScript 32-Bit-Ganzzahlen mit Vorzeichen verwendet, wird nicht 10 zurückgegeben, sondern -6.

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5=-6)

Eine Ganzzahl mit Vorzeichen verwendet das Bit ganz links als Minuszeichen.



JavaScript Bitweises UND

Wenn ein bitweises UND für ein Bitpaar ausgeführt wird, wird 1 zurückgegeben, wenn beide Bits 1 sind.

0 & 0

0

0 & 1

0

1 & 0

0

1 & 1

1

1111 & 0000

0000

1111 & 0001

0001

1111 & 0010

0010

1111 & 0100

0100


JavaScript Bitweises ODER

Wenn ein bitweises ODER für ein Bitpaar ausgeführt wird, wird 1 zurückgegeben, wenn eines der Bits 1 ist:

0 | 0

0

0 | 1

1 | 0

1

1 | 1

1

1111 | 0000

1111

1111 | 0001

1111

1111 | 0010

1111

1111 | 0100

1111


JavaScript Bitweises XOR

Wenn ein bitweises XOR für ein Bitpaar durchgeführt wird, wird 1 zurückgegeben, wenn die Bits unterschiedlich sind:

0 ^ 0

0

0 ^ 1

1 ^ 0

1

1 ^ 1

1111 ^ 0000

1111

1111 ^ 0001

1110

1111 ^ 0010

1101

1111 ^ 0100

1011


JavaScript Bitweises UND (&)

Bitweises UND gibt nur dann 1 zurück, wenn beide Bits 1 sind:

5

00000000000000000000000000000101

1

00000000000000000000000000000001

5 & 1

00000000000000000000000000000001 (1)

Beispiel

let x = 5 & 1;

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Bitwise AND</h1>
<h2>The &amp; Operator</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = 5 & 1;
</script>

</body>
</html> 

JavaScript bitweises ODER (|)

Bitweises ODER gibt 1 zurück, wenn eines der Bits 1 ist:

5

00000000000000000000000000000101

1

00000000000000000000000000000001

5 | 1

00000000000000000000000000000101 (5)

Beispiel

let x = 5 | 1;

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Bitwise OR</h1>
<h2>The | Operator</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = 5 | 1;
</script>

</body>
</html>

JavaScript Bitweises XOR (^)

Bitweises XOR gibt 1 zurück, wenn die Bits unterschiedlich sind:

5

00000000000000000000000000000101

1

00000000000000000000000000000001

5 ^ 1

00000000000000000000000000000100 (4)

Beispiel

let x = 5 ^ 1;

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Bitwise XOR</h1>
<h2>The ^ Operator</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = 5 ^ 1;
</script>

</body>
</html>

JavaScript Bitweise NICHT (~)

5

00000000000000000000000000000101

~5

11111111111111111111111111111010 (-6)

Beispiel

let x = ~5;

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Bitwise NOT</h1>
<h2>The ~ Operator</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = ~ 5;
</script>

</body>
</html>

JavaScript (Zero Fill) Bitweise Linksverschiebung (<<)

Dies ist eine Linksverschiebung mit Nullfüllung. Ein oder mehrere Nullbits werden von rechts eingeschoben, und die ganz linken Bits fallen ab:

5

00000000000000000000000000000101

5 << 1

00000000000000000000000000001010 (10)

Beispiel

let x = 5 << 1;

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Bitwise Left</h1>
<h2>The &lt;&lt; Operator</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = 5 << 1;
</script>

</body>
</html>

JavaScript (Zeichenerhaltung) Bitweise Rechtsverschiebung (>>)

Dies ist ein Zeichen, dass die Rechtsverschiebung erhalten bleibt. Kopien des Bits ganz links werden gepusht von links hinein, und die Bits ganz rechts fallen ab:

-5

11111111111111111111111111111011

-5 >> 1

11111111111111111111111111111101 (-3)

Beispiel

let x = -5 >> 1;

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Signed Bitwise Right</h1>
<h2>The &gt;&gt; Operator</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = -5 >> 1;
</script>

</body>
</html>

JavaScript (Zero Fill) Rechtsverschiebung (>>>)

Dies ist eine Rechtsverschiebung mit Nullfüllung. Ein oder mehrere Nullbits werden von links eingeschoben, und die Bits ganz rechts fallen ab:

5

00000000000000000000000000000101

5 >>> 1

00000000000000000000000000000010 (2)

Beispiel

let x = 5 >>> 1;

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Unsigned Bitwise Right</h1>
<h2>The &gt;&gt;&gt; Operator</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = 5 >>> 1;
</script>

</body>
</html>

Binärzahlen

Binärzahlen mit nur einem gesetzten Bit sind leicht zu verstehen:

00000000000000000000000000000001

1

00000000000000000000000000000010

2

00000000000000000000000000000100

4

00000000000000000000000000001000

8

00000000000000000000000000010000

16

00000000000000000000000000100000

32

00000000000000000000000001000000

64

Das Setzen einiger weiterer Bits zeigt das binäre Muster:

00000000000000000000000000000101

5 (4 + 1)

00000000000000000000000000001101

13 (8 + 4 + 1)

00000000000000000000000000101101

45 (32 + 8 + 4 + 1)

JavaScript-Binärzahlen werden im Zweierkomplementformat gespeichert.

Das bedeutet, dass eine negative Zahl das bitweise NICHT der Zahl plus 1 ist:

00000000000000000000000000000101

5

11111111111111111111111111111011

-5

00000000000000000000000000000110

6

11111111111111111111111111111010

-6

00000000000000000000000000101000

40

11111111111111111111111111011000

-40

Witz :

Es gibt nur 10 Arten von Menschen auf der Welt: diejenigen, die Binärsystem verstehen, und diejenigen, die es nicht verstehen.


Konvertieren von Dezimalzahlen in Binärzahlen

Beispiel

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

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Convert Decimal to Binary</h1>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = dec2bin(-5);
function dec2bin(dec){
  return (dec >>> 0).toString(2);
}
</script>

</body>
</html>

Binär in Dezimal umwandeln

Beispiel

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

Probieren Sie es selbst aus →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Convert Binary to Decimal</h2>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = bin2dec(101);
function bin2dec(bin){
  return parseInt(bin, 2).toString(10);
}
</script>

</body>
</html>