Bitweises NICHT (~)

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 NICHT-Operator (~) liefert eine Zahl oder ein BigInt, deren binäre Darstellung an jeder Bitposition, bei der das entsprechende Bit des Operanden 0 ist, eine 1 aufweist, und sonst eine 0.

Probieren Sie es aus

const a = 5; // 00000000000000000000000000000101
const b = -3; // 11111111111111111111111111111101

console.log(~a); // 11111111111111111111111111111010
// Expected output: -6

console.log(~b); // 00000000000000000000000000000010
// Expected output: 2

Syntax

js
~x

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 erzwungen den Operanden zu einem numerischen Wert und prüft den Typ davon. Er führt ein BigInt-NICHT aus, wenn der Operand zu einem BigInt wird; andernfalls konvertiert er den Operanden in eine 32-Bit-Ganzzahl und führt ein bitweises NICHT für Zahlen aus.

Der Operator arbeitet auf den Bitdarstellungen der Operanden im Zweierkomplement. Der Operator wird auf jedes Bit angewandt, und das Ergebnis wird bitweise konstruiert.

Die Wahrheitstabelle für die NICHT-Operation ist:

x NICHT x
0 1
1 0
 9 (base 10) = 00000000000000000000000000001001 (base 2)
               --------------------------------
~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)

Zahlen mit mehr als 32 Bits haben ihre bedeutendsten Bits verworfen. Zum Beispiel wird die folgende Ganzzahl mit mehr als 32 Bits in eine 32-Bit-Ganzzahl umgewandelt:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Bei BigInts gibt es keine Trunkierung. Konzeptionell kann man sich positive BigInts als unendlich viele führende 0-Bits und negative BigInts als unendlich viele führende 1-Bits vorstellen.

Das bitweise NICHT von jeder 32-Bit-Ganzzahl x ergibt -(x + 1). Zum Beispiel ergibt ~-5 den Wert 4.

Das bitweise NICHT von jeder Zahl x zweimal angewandt, gibt x, konvertiert in eine 32-Bit-Ganzzahl, zurück. Verwenden Sie nicht ~~x, um Zahlen auf Ganzzahlen zu beschränken; nutzen Sie stattdessen Math.trunc(). Aufgrund der Nutzung von 32-Bit-Darstellungen für Zahlen führen sowohl ~-1 als auch ~4294967295 (232 - 1) zu 0.

Beispiele

Verwendung des bitweisen NICHT

js
~0; // -1
~-1; // 0
~1; // -2

~0n; // -1n
~4294967295n; // -4294967296n

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-bitwise-not-operator

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch