Bitweises XOR (^)

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 XOR (^) 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, aber nicht beider Operanden 1 sind.

Probieren Sie es aus

const a = 5; // 00000000000000000000000000000101
const b = 3; // 00000000000000000000000000000011

console.log(a ^ b); // 00000000000000000000000000000110
// Expected output: 6

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-Integer zurück. Für BigInts gibt der Operator einen BigInt zurück. Zuerst konvertiert er beide Operanden zu numerischen Werten und prüft deren Typen. Er führt BigInt XOR aus, wenn beide Operanden BigInts werden; andernfalls konvertiert er beide Operanden zu 32-Bit-Integern und führt einen bitweisen XOR für Zahlen aus. Ein TypeError wird ausgelöst, wenn ein Operand zu einem BigInt wird, der andere jedoch zu einer Zahl.

Der Operator arbeitet mit den Bitdarstellungen der Operanden im Zweistellenkomplement. Jedes Bit des ersten Operanden wird mit dem entsprechenden Bit des zweiten Operanden gepaart: erstes Bit zu erstem Bit, zweites Bit zu zweitem Bit und so weiter. Der Operator wird auf jedes Paar von Bits angewendet, und das Ergebnis wird bitweise konstruiert.

Die Wahrheitstabelle für die XOR-Operation ist:

x y x XOR y
0 0 0
0 1 1
1 0 1
1 1 0
     9 (base 10) = 00000000000000000000000000001001 (base 2)
    14 (base 10) = 00000000000000000000000000001110 (base 2)
                   --------------------------------
14 ^ 9 (base 10) = 00000000000000000000000000000111 (base 2) = 7 (base 10)

Zahlen mit mehr als 32 Bits lassen ihre höchstwertigen Bits fallen. Zum Beispiel wird die folgende Ganzzahl mit mehr als 32 Bits in einen 32-Bit-Integer konvertiert:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Warnung: Vielleicht sehen Sie Leute, die ^ 0 verwenden, um Zahlen auf Ganzzahlen zu kürzen. Bitweises XOR mit einer Zahl x und 0 gibt x konvertiert in einen 32-Bit-Integer zurück, was zusätzlich führende Bits für Zahlen außerhalb des Bereichs von -2147483648 bis 2147483647 entfernt. Verwenden Sie stattdessen Math.trunc().

Für BigInts gibt es keine Kürzung. Konzeptuell können Sie positive BigInts als eine unendliche Anzahl von führenden 0-Bits und negative BigInts als eine unendliche Anzahl von führenden 1-Bits verstehen.

Beispiele

Verwendung des bitweisen XOR

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

14 ^ 9;
// 7  (00000000000000000000000000000111)

14n ^ 9n; // 7n

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# prod-BitwiseXORExpression

Browser-Kompatibilität

Siehe auch