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
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
// 9 (00000000000000000000000000001001)
// 14 (00000000000000000000000000001110)
14 | 9;
// 15 (00000000000000000000000000001111)
14n | 9n; // 15n
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # prod-BitwiseORExpression |