Bitwise OR (|)

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-OR-Operator (|) gibt eine Zahl oder ein BigInt zurück, dessen binäre Darstellung eine 1 in jeder Bitposition hat, für die die entsprechenden Bits eines oder beider Operanden 1 sind.

Probieren Sie es aus

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

console.log(a | b); // 00000000000000000000000000000111
// Expected output: 7

Syntax

js
x | y

Beschreibung

Der |-Operator ist für zwei Arten von Operanden überladen: Zahl und BigInt. Bei Zahlen gibt der Operator einen 32-Bit-Integer zurück. Bei BigInts gibt der Operator ein BigInt zurück. Er zwingt zunächst beide Operanden zu numerischen Werten und prüft ihre Typen. Er führt BigInt-OR aus, wenn beide Operanden zu BigInts werden; andernfalls konvertiert er beide Operanden zu 32-Bit-Integern und führt bitweise OR für Zahlen aus. Ein TypeError wird ausgelöst, wenn ein Operand zu einem BigInt wird, der andere jedoch zu einer Zahl.

Der Operator operiert auf den Bitdarstellungen der Operanden im 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 ODER-Operation ist:

x y x ODER y
0 0 0
0 1 1
1 0 1
1 1 1
     9 (base 10) = 00000000000000000000000000001001 (base 2)
    14 (base 10) = 00000000000000000000000000001110 (base 2)
                   --------------------------------
14 | 9 (base 10) = 00000000000000000000000000001111 (base 2) = 15 (base 10)

Zahlen mit mehr als 32 Bits lassen ihre höchstwertigen Bits wegfallen. Zum Beispiel wird der folgende Integer mit mehr als 32 Bits in einen 32-Bit-Integer umgewandelt:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Warnung: Sie werden möglicherweise Menschen sehen, die | 0 verwenden, um Zahlen zu Ganzzahlen zu kürzen. Bitweises ORen einer beliebigen Zahl x mit 0 gibt x als 32-Bit-Integer zurück, was zusätzlich führende Bits für Zahlen außerhalb des Bereichs von -2147483648 bis 2147483647 entfernt. Verwenden Sie stattdessen Math.trunc().

Für BigInts gibt es keine Kürzung. Konzeptuell sind positive BigInts als mit einer unendlichen Anzahl von führenden 0-Bits und negative BigInts als mit einer unendlichen Anzahl von führenden 1-Bits zu verstehen.

Beispiele

Verwendung von bitwise OR

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

14 | 9;
// 15 (00000000000000000000000000001111)

14n | 9n; // 15n

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# prod-BitwiseORExpression

Browser-Kompatibilität

Siehe auch