Bitweises ODER (|)

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 ODER-Operator (|) gibt eine Zahl oder BigInt zurück, deren 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 Typen von Operanden überladen: Zahl und BigInt. Für Zahlen gibt der Operator eine 32-Bit-Ganzzahl zurück. Für BigInts gibt der Operator ein BigInt zurück. Er wandelt zunächst beide Operanden in numerische Werte um und überprüft die Typen. Er führt ein BigInt ODER aus, wenn beide Operanden zu BigInts werden; andernfalls konvertiert er beide Operanden zu 32-Bit-Ganzzahlen und führt ein bitweises ODER für Zahlen aus. Ein TypeError wird ausgelöst, wenn ein Operand zu einem BigInt wird, während der andere zu einer Zahl wird.

Der Operator arbeitet mit den Bit-Darstellungen 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 Bit-Paar angewendet, und das Ergebnis wird Bit für Bit 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 verlieren ihre höchstwertigen Bits. Zum Beispiel wird die folgende Ganzzahl mit mehr als 32 Bits in eine 32-Bit-Ganzzahl umgewandelt:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Für BigInts gibt es keine Abschneidungen. Konzeptionell können Sie sich positive BigInts als mit einer unendlichen Anzahl führender 0-Bits vorstellen und negative BigInts als mit einer unendlichen Anzahl führender 1-Bits.

Das bitweise ODER einer beliebigen Zahl x mit 0 gibt x als 32-Bit-Ganzzahl zurück. Verwenden Sie | 0 nicht, um Zahlen auf Ganzzahlen zu kürzen; verwenden Sie stattdessen Math.trunc().

Beispiele

Verwendung von bitweisem ODER

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

14 | 9;
// 15 (00000000000000000000000000001111)

14n | 9n; // 15n

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# prod-BitwiseORExpression

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 OR (a | b)

Legend

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

Full support
Full support

Siehe auch