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
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
// 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 GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bitwise OR ( a | b ) |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support