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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow