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 ein BigInt zurück, dessen binäre Darstellung eine 1 in jeder Bitposition hat, für die die entsprechenden Bits entweder des einen, aber nicht beider Operanden 1 sind.

Probieren Sie es aus

Syntax

js
x ^ y

Beschreibung

Der ^ Operator ist für zwei Arten von Operanden überladen: Zahl und BigInt. Für Zahlen gibt der Operator einen 32-Bit-Integer zurück. Für BigInts gibt der Operator ein BigInt zurück. Er zwingt zunächst beide Operanden in numerische Werte und prüft deren Typen. Er führt BigInt-XOR aus, wenn beide Operanden BigInts werden; andernfalls werden beide Operanden in 32-Bit-Integer umgewandelt und eine bitweise XOR-Verknüpfung durchgeführt. Es wird ein TypeError ausgelöst, wenn ein Operand ein BigInt wird, der andere jedoch eine Zahl.

Der Operator arbeitet auf den Bitdarstellungen der Operanden im Zweierkomplement. Jedes Bit im ersten Operanden wird mit dem entsprechenden Bit im zweiten Operanden gepaart: erstes Bit zum ersten Bit, zweites Bit zum zweiten Bit und so weiter. Der Operator wird auf jedes Bitpaar 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 Bit haben ihre höchstwertigen Bits verworfen. Zum Beispiel wird der folgende Integer mit mehr als 32 Bit in einen 32-Bit-Integer umgewandelt:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Für BigInts gibt es keine Verkürzung. Man sollte sich positive BigInts konzeptionell als eine unendliche Anzahl führender 0 Bits und negative BigInts als eine unendliche Anzahl führender 1 Bits vorstellen.

Das bitweise X-OR-Verknüpfen einer beliebigen Zahl x mit 0 gibt x als 32-Bit-Integer zurück. Verwenden Sie nicht ^ 0, um Zahlen auf ganze Zahlen zu kürzen; verwenden Sie stattdessen Math.trunc().

Beispiele

Verwendung von bitweisem XOR

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

14 ^ 9;
// 7  (00000000000000000000000000000111)

14n ^ 9n; // 7n

Spezifikationen

Specification
ECMAScript Language Specification
# prod-BitwiseXORExpression

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch