Bitweises 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 einen BigInt zurück, deren binäre Darstellung in jeder Bitposition eine 1 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 Typen von Operanden überladen: Zahl und BigInt. Für Zahlen gibt der Operator einen 32-Bit-Ganzzahl zurück. Für BigInts gibt der Operator einen BigInt zurück. Zuerst werden beide Operanden in numerische Werte umgewandelt und deren Typen überprüft. Es wird eine BigInt-OR-Operation durchgeführt, wenn beide Operanden zu BigInts werden; andernfalls werden beide Operanden in 32-Bit-Ganzzahlen umgewandelt und eine bitweise OR-Operation für Zahlen durchgeführt. Eine TypeError wird ausgelöst, wenn ein Operand ein BigInt wird, aber der andere eine Zahl.

Der Operator operiert auf den Bit-Darstellungen der Operanden im Zweier-Komplement. Jedes Bit im ersten Operanden wird mit dem entsprechenden Bit im zweiten Operanden gepaart: erstes Bit zu erstem Bit, zweites Bit zu zweitem Bit usw. Der Operator wird auf jedes Bitpaar angewendet, und das Ergebnis wird bitweise konstruiert.

Die Wahrheitstabelle für die OR-Operation ist:

x y x OR 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 werden bei den höchstwertigen Bits abgeschnitten. Zum Beispiel wird die folgende Ganzzahl mit mehr als 32 Bits in eine 32-Bit-Ganzzahl konvertiert:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Warnung: Sie könnten sehen, dass Leute | 0 verwenden, um Zahlen auf Ganzzahlen zu kürzen. Das bitweise OR einer beliebigen Zahl x mit 0 gibt x konvertiert zu einer 32-Bit-Ganzzahl zurück, was zusätzlich führende Bits für Zahlen außerhalb des Bereichs -2147483648 bis 2147483647 entfernt. Verwenden Sie stattdessen Math.trunc().

Für BigInts gibt es keine Trunkierung. Konzeptionell verstehen Sie 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.

Beispiele

Verwendung von bitweisem 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