Bitwise-AND (&)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Der Bitwise-AND (&)-Operator gibt eine Zahl oder BigInt zurück, deren binäre Darstellung an jeder Bitposition eine 1 hat, für die die entsprechenden Bits beider Operanden 1 sind.

Probieren Sie es aus

const a = 5; // 00000000000000000000000000000101
const b = 3; // 00000000000000000000000000000011

console.log(a & b); // 00000000000000000000000000000001
// Expected output: 1

Syntax

js
x & y

Beschreibung

Der &-Operator ist überladen für zwei Typen von Operanden: Number und BigInt. Für Zahlen gibt der Operator eine 32-Bit-Ganzzahl zurück. Für BigInts gibt der Operator ein BigInt zurück. Zunächst zwingt er beide Operanden zu numerischen Werten und prüft deren Typen. Er führt BigInt-AND aus, wenn beide Operanden zu BigInts werden; andernfalls konvertiert er beide Operanden zu 32-Bit-Ganzzahlen und führt eine bitweise UND-Operation auf Zahlen durch. Ein TypeError wird ausgelöst, wenn ein Operand zu einem BigInt wird, der andere jedoch zu einer Zahl.

Der Operator arbeitet mit den Bitdarstellungen der Operanden in Zweierkomplement. Jedes Bit im ersten Operanden wird mit dem entsprechenden Bit im zweiten Operanden gepaart: erstes Bit zu erstem Bit, zweites Bit zu zweitem Bit und so weiter. Der Operator wird auf jedes Bitpaar angewendet, und das Ergebnis wird bitweise konstruiert.

Die Wahrheitstabelle für die AND-Operation ist:

x y x AND y
0 0 0
0 1 0
1 0 0
1 1 1
     9 (base 10) = 00000000000000000000000000001001 (base 2)
    14 (base 10) = 00000000000000000000000000001110 (base 2)
                   --------------------------------
14 & 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)

Zahlen mit mehr als 32 Bits verlieren ihre bedeutendsten Bits. Zum Beispiel wird die folgende Ganzzahl mit mehr als 32 Bits in eine 32-Bit-Ganzzahl umgewandelt:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Bei BigInts gibt es keine Verkürzung. Konzeptionell verstehen Sie positive BigInts als mit einer unendlichen Anzahl von führenden 0-Bits und negative BigInts mit einer unendlichen Anzahl von führenden 1-Bits.

Das Bitweise-ANDing einer beliebigen Zahl x mit -1 gibt x in eine 32-Bit-Ganzzahl umgewandelt zurück. Verwenden Sie & -1 nicht, um Zahlen zu Ganzzahlen zu kürzen; verwenden Sie stattdessen Math.trunc().

Beispiele

Verwendung von bitwise AND

js
// 9  (00000000000000000000000000001001)
// 14 (00000000000000000000000000001110)

14 & 9;
// 8  (00000000000000000000000000001000)

14n & 9n; // 8n

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# prod-BitwiseANDExpression

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch