Bitweises UND (&)

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 bitweise UND (&)-Operator gibt eine Zahl oder ein BigInt zurück, dessen Binärdarstellung in jeder Bit-Position, für die die entsprechenden Bits beider Operanden 1 sind, eine 1 enthält.

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 für zwei Operanden-Typen überladen: Zahl und BigInt. Für Zahlen gibt der Operator eine 32-Bit-Zahl zurück. Für BigInts gibt der Operator ein BigInt zurück. Zuerst wandelt er beide Operanden in numerische Werte um und prüft deren Typen. Er führt ein BigInt UND aus, wenn beide Operanden zu BigInts werden; andernfalls werden beide Operanden in 32-Bit-Zahlen umgewandelt und ein bitweises UND für Zahlen wird ausgeführt. Ein TypeError wird ausgelöst, wenn ein Operand ein BigInt wird, der andere jedoch eine Zahl.

Der Operator arbeitet mit den Bit-Repräsentationen der Operanden in der Zweierkomplement-Darstellung. Jedes Bit im ersten Operanden wird mit dem entsprechenden Bit im zweiten Operanden gepaart: erstes Bit mit erstem Bit, zweites Bit mit zweitem Bit usw. Der Operator wird auf jedes Bit-Paar angewendet, und das Ergebnis wird bitweise konstruiert.

Die Wahrheitstabelle für die UND-Operation lautet:

x y x UND 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 Bit verlieren ihre höchstwertigen Bits. Zum Beispiel wird die folgende Ganzzahl mit mehr als 32 Bit in eine 32-Bit-Zahl umgewandelt:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Für BigInts gibt es keine Abschneidung. Konzeptuell kann man sich positive BigInts mit einer unendlichen Anzahl führender 0-Bits und negative BigInts mit einer unendlichen Anzahl führender 1-Bits vorstellen.

Ein bitweises UND mit einer beliebigen Zahl x und -1 gibt x als 32-Bit-Zahl zurück. Verwenden Sie nicht & -1, um Zahlen auf Ganzzahlen zu kürzen; verwenden Sie stattdessen Math.trunc().

Beispiele

Verwendung von bitweisem UND

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

14 & 9;
// 8  (00000000000000000000000000001000)

14n & 9n; // 8n

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# prod-BitwiseANDExpression

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Bitwise AND (a & b)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch