Suche…
Einführung
Der Operator ~ betrachtet die binäre Darstellung der Werte des Ausdrucks und führt eine bitweise Negation durch.
Jede Ziffer, die im Ausdruck eine 1 ist, wird im Ergebnis eine 0. Jede Ziffer, die im Ausdruck eine 0 ist, wird im Ergebnis eine 1.
~ Ganzzahl
Das folgende Beispiel veranschaulicht die Verwendung des bitweisen NOT-Operators (~) für ganzzahlige Zahlen.
let number = 3;
let complement = ~number;
Ergebnis der complement
gleich -4;
Ausdruck | Binärer Wert | Dezimalwert |
---|---|---|
3 | 00000000 00000000 00000000 00000011 | 3 |
~ 3 | 11111111 11111111 11111111 11111100 | -4 |
Um dies zu vereinfachen, können wir es uns als Funktion f(n) = -(n+1)
.
let a = ~-2; // a is now 1
let b = ~-1; // b is now 0
let c = ~0; // c is now -1
let d = ~1; // d is now -2
let e = ~2; // e is now -3
~~ Betreiber
Double Tilde ~~
führt zwei mal bitweise NICHT aus.
Das folgende Beispiel veranschaulicht die Verwendung des bitweisen NOT-Operators (~~) für Dezimalzahlen.
Um das Beispiel einfach zu halten, wird die Dezimalzahl 3.5
verwendet, da es sich um eine einfache Darstellung im Binärformat handelt.
let number = 3.5;
let complement = ~number;
Ergebnis der complement
gleich -4;
Ausdruck | Binärer Wert | Dezimalwert |
---|---|---|
3 | 00000000 00000000 00000000 00000011 | 3 |
~~ 3 | 00000000 00000000 00000000 00000011 | 3 |
3,5 | 00000000 00000011.1 | 3,5 |
~~ 3.5 | 00000000 00000011 | 3 |
Um dies zu vereinfachen, können wir uns dies als Funktionen f2(n) = -(-(n+1) + 1)
und g2(n) = -(-(integer(n)+1) + 1)
f2(n) = -(-(n+1) + 1)
g2(n) = -(-(integer(n)+1) + 1)
.
Bei f2 (n) bleibt die ganze Zahl erhalten.
let a = ~~-2; // a is now -2
let b = ~~-1; // b is now -1
let c = ~~0; // c is now 0
let d = ~~1; // d is now 1
let e = ~~2; // e is now 2
g2 (n) rundet positive und negative Zahlen im Wesentlichen ab.
let a = ~~-2.5; // a is now -2
let b = ~~-1.5; // b is now -1
let c = ~~0.5; // c is now 0
let d = ~~1.5; // d is now 1
let e = ~~2.5; // e is now 2
Konvertieren von nicht numerischen Werten in Zahlen
~~
Kann für nicht numerische Werte verwendet werden. Ein numerischer Ausdruck wird zuerst in eine Zahl konvertiert und dann bitweise NICHT ausgeführt.
Wenn der Ausdruck nicht in einen numerischen Wert konvertiert werden kann, wird er in 0
konvertiert.
true
und false
Bool-Werte sind Ausnahmen, wobei true
als numerischer Wert 1
und false
als 0
let a = ~~"-2"; // a is now -2
let b = ~~"1"; // b is now -1
let c = ~~"0"; // c is now 0
let d = ~~"true"; // d is now 0
let e = ~~"false"; // e is now 0
let f = ~~true; // f is now 1
let g = ~~false; // g is now 0
let h = ~~""; // h is now 0
Abkürzungen
In manchen Alltagsszenarien können wir ~
als Abkürzung verwenden.
Wir wissen, dass ~
-1
in 0
konvertiert, sodass wir es mit indexOf
auf Array verwenden können.
Index von
let items = ['foo', 'bar', 'baz'];
let el = 'a';
if (items.indexOf('a') !== -1) {}
or
if (items.indexOf('a') >= 0) {}
kann als neu geschrieben werden
if (~items.indexOf('a')) {}
~ Dezimalzahl
Das folgende Beispiel veranschaulicht die Verwendung des bitweisen NOT-Operators (~) für Dezimalzahlen.
Um das Beispiel einfach zu halten, wird die Dezimalzahl 3.5
verwendet, da es sich um eine einfache Darstellung im Binärformat handelt.
let number = 3.5;
let complement = ~number;
Ergebnis der complement
gleich -4;
Ausdruck | Binärer Wert | Dezimalwert |
---|---|---|
3,5 | 00000000 00000010.1 | 3,5 |
~ 3,5 | 11111111 11111100 | -4 |
Um dies zu vereinfachen, können wir es uns als Funktion f(n) = -(integer(n)+1)
.
let a = ~-2.5; // a is now 1
let b = ~-1.5; // b is now 0
let c = ~0.5; // c is now -1
let d = ~1.5; // c is now -2
let e = ~2.5; // c is now -3