Ricerca…


introduzione

L'operatore ~ ​​guarda la rappresentazione binaria dei valori dell'espressione e fa un'operazione di negazione per bit su di esso.

Qualsiasi cifra che sia 1 nell'espressione diventa 0 nel risultato. Qualsiasi cifra che è 0 nell'espressione diventa 1 nel risultato.

~ Integer

Il seguente esempio illustra l'uso dell'operatore NOT bit (~) bit su numeri interi.

let number = 3;
let complement = ~number;

Il risultato del numero di complement uguale a -4;

Espressione Valore binario Valore decimale
3 00000000 00000000 00000000 00000011 3
~ 3 11111111 11111111 11111111 11111100 -4

Per semplificare questo, possiamo pensarlo come funzione 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

~~ Operatore

Double Tilde ~~ eseguirà due volte un'operazione NOT bit a bit.

Nell'esempio seguente viene illustrato l'utilizzo dell'operatore NOT bit (~~) per bit sui numeri decimali.

Per mantenere l'esempio semplice, verrà utilizzato il numero decimale 3.5 , a causa della sua semplice rappresentazione in formato binario.

let number = 3.5;
let complement = ~number;

Il risultato del numero di complement uguale a -4;

Espressione Valore binario Valore decimale
3 00000000 00000000 00000000 00000011 3
~~ 3 00000000 00000000 00000000 00000011 3
3.5 00000000 00000011.1 3.5
~~ 3.5 00000000 00000011 3

Per semplificare questo, possiamo pensarlo come funzioni f2(n) = -(-(n+1) + 1) e g2(n) = -(-(integer(n)+1) + 1) .

f2 (n) lascerà il numero intero così com'è.

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) essenzialmente arrotonderà i numeri positivi verso il basso e quelli negativi verso l'alto.

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

Conversione di valori non numerici in numeri

~~ Potrebbe essere utilizzato su valori non numerici. Un'espressione numerica verrà prima convertita in un numero e quindi eseguita un'operazione NOT bit a bit su di esso.

Se l'espressione non può essere convertita in valore numerico, verrà convertita in 0 .

true valori bool true e false sono eccezioni, laddove il true è presentato come valore numerico 1 e false come 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

abbreviazioni

Possiamo usare ~ come una scorciatoia in alcuni scenari di tutti i giorni.

Sappiamo che ~ converte da -1 a 0 , quindi possiamo usarlo con indexOf su array.

indice di

let items = ['foo', 'bar', 'baz'];
let el = 'a';
if (items.indexOf('a') !== -1) {}

or

if (items.indexOf('a') >= 0) {}

può essere riscritto come

if (~items.indexOf('a')) {}

~ Decimale

Nell'esempio seguente viene illustrato l'utilizzo dell'operatore NOT per bit (~) sui numeri decimali.

Per mantenere l'esempio semplice, verrà utilizzato il numero decimale 3.5 , a causa della sua semplice rappresentazione in formato binario.

let number = 3.5;
let complement = ~number;

Il risultato del numero di complement uguale a -4;

Espressione Valore binario Valore decimale
3.5 00000000 00000010.1 3.5
~ 3.5 11111111 11111100 -4

Per semplificare questo, possiamo pensarlo come funzione 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow