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 ein BigInt
zurück, deren binäre Darstellung in jeder Bitposition eine 1
hat, für die das entsprechende Bit des Operanden 0
ist, und andernfalls 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 einen 32-Bit-Integer zurück. Für BigInts gibt der Operator ein BigInt zurück. Zuerst erzwingt er die Umwandlung des Operanden in einen numerischen Wert und überprüft den Typ davon. Wenn der Operand zu einem BigInt wird, führt er ein BigInt-NICHT aus; andernfalls wird der Operand in einen 32-Bit-Integer konvertiert und führt ein numerisches bitweises NICHT aus.
Der Operator arbeitet auf der Bitdarstellung der Operanden im Zweierkomplement. Der Operator wird auf jedes Bit angewendet, und das Ergebnis wird bitweise zusammengesetzt.
Die Wahrheitstabelle für die NICHT-Operation ist:
x | NOT 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 höchstwertigen Bits verworfen. Zum Beispiel wird die folgende Zahl mit mehr als 32 Bits in eine 32-Bit-Zahl konvertiert:
Before: 11100110111110100000000000000110000000000001 After: 10100000000000000110000000000001
Für BigInts gibt es keine Verkürzung. Konzeptionell sind positive BigInts als mit einer unendlichen Anzahl von führenden 0
-Bits zu verstehen, und negative BigInts als mit einer unendlichen Anzahl von führenden 1
-Bits.
Das bitweise NICHT für jeden 32-Bit-Integer x
ergibt -(x + 1)
. Zum Beispiel ergibt ~-5
den Wert 4
.
Das zweifache Anwenden des bitweisen NICHT auf jede Zahl x
gibt x
als 32-Bit-Integer zurück. Verwenden Sie nicht ~~x
, um Zahlen auf Integer zu verkürzen; verwenden Sie stattdessen Math.trunc()
. Aufgrund der Verwendung der 32-Bit-Darstellung für Zahlen ergeben sowohl ~-1
als auch ~4294967295
(232 - 1) den Wert 0
.
Beispiele
Verwendung von bitweises NICHT
~0; // -1
~-1; // 0
~1; // -2
~0n; // -1n
~4294967295n; // -4294967296n
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-bitwise-not-operator |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bitwise NOT ( ~a ) |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support