HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
View in English Always switch to English
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
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.
|
1
const a = 5; // 00000000000000000000000000000101 const b = 3; // 00000000000000000000000000000011 console.log(a | b); // 00000000000000000000000000000111 // Expected output: 7
x | y
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.
TypeError
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:
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().
| 0
x
0
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.
// 9 (00000000000000000000000000001001) // 14 (00000000000000000000000000001110) 14 | 9; // 15 (00000000000000000000000000001111) 14n | 9n; // 15n
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
|=