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 (~
) gibt eine Zahl oder einen BigInt zurück, dessen binäre Darstellung an jeder Bitposition, für die das entsprechende Bit des Operanden 0
ist, ein 1
hat, und sonst 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
~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 einen BigInt zurück. Zuerst wandelt er den Operanden in einen numerischen Wert um und prüft dessen Typ. Er führt eine BigInt-NICHT-Operation durch, wenn der Operand zu einem BigInt wird; andernfalls wandelt er den Operanden in eine 32-Bit-Ganzzahl um und führt eine bitweise NICHT-Operation auf Zahlen aus.
Der Operator arbeitet auf den Bits der Operanden in Zweierkomplement. Der Operator wird auf jedes Bit angewendet, und das Ergebnis wird bitweise aufgebaut.
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)
Ein bitweises NICHT einer beliebigen 32-Bit-Ganzzahl x
ergibt -(x + 1)
. Zum Beispiel ergibt ~-5
den Wert 4
.
Zahlen mit mehr als 32 Bits verlieren ihre höchstwertigen Bits. Zum Beispiel wird die folgende Ganzzahl mit mehr als 32 Bits in eine 32-Bit-Ganzzahl umgewandelt:
Before: 11100110111110100000000000000110000000000001 After: 10100000000000000110000000000001
Warnung:
Sie werden möglicherweise sehen, dass ~~
verwendet wird, um Zahlen auf Ganzzahlen zu kürzen. Ein doppeltes bitweises NICHT einer beliebigen Zahl x
ergibt x
als 32-Bit-Ganzzahl, 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. Konzeptionell können Sie positive BigInts als mit einer unendlichen Anzahl führender 0
-Bits verstehen, und negative BigInts mit einer unendlichen Anzahl führender 1
-Bits.
Beispiele
Verwendung von bitweisem NICHT
~0; // -1
~-1; // 0
~1; // -2
~0n; // -1n
~4294967295n; // -4294967296n
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-bitwise-not-operator |