Recherche…
Introduction
L'opérateur ~ examine la représentation binaire des valeurs de l'expression et effectue une opération de négation binaire sur celle-ci.
Tout chiffre qui est un 1 dans l'expression devient un 0 dans le résultat. Tout chiffre qui est un 0 dans l'expression devient un 1 dans le résultat.
~ Entier
L'exemple suivant illustre l'utilisation de l'opérateur NOT (~) au niveau du bit sur des nombres entiers.
let number = 3;
let complement = ~number;
Le résultat du nombre de complement
est égal à -4;
Expression | Valeur binaire | Valeur décimale |
---|---|---|
3 | 00000000 00000000 00000000 00000011 | 3 |
~ 3 | 11111111 11111111 11111111 11111100 | -4 |
Pour simplifier cela, nous pouvons le considérer comme fonction 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
~~ Opérateur
Double Tilde ~~
effectuera deux fois l'opération NON bit à bit.
L'exemple suivant illustre l'utilisation de l'opérateur NOT (~~) bit à bit sur les nombres décimaux.
Pour garder l'exemple simple, le nombre décimal 3.5
sera utilisé, en raison de sa représentation simple au format binaire.
let number = 3.5;
let complement = ~number;
Le résultat du nombre de complement
est égal à -4;
Expression | Valeur binaire | Valeur décimale |
---|---|---|
3 | 00000000 00000000 00000000 00000011 | 3 |
~~ 3 | 00000000 00000000 00000000 00000011 | 3 |
3.5 | 00000000 00000011.1 | 3.5 |
~~ 3.5 | 00000000 00000011 | 3 |
Pour simplifier cela, nous pouvons le considérer comme des fonctions f2(n) = -(-(n+1) + 1)
et g2(n) = -(-(integer(n)+1) + 1)
.
f2 (n) laissera le nombre entier tel quel.
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) arrondira essentiellement les nombres positifs vers le bas et les nombres négatifs vers le haut.
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
Conversion de valeurs non numériques en nombres
~~
Peut être utilisé sur des valeurs non numériques. Une expression numérique sera d'abord convertie en un nombre, puis exécutée au niveau du bit.
Si expression ne peut pas être convertie en valeur numérique, elle sera convertie en 0
.
true
valeurs booléennes true
et false
sont des exceptions, où true
est présenté comme valeur numérique 1
et false
comme 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
Sténographie
Nous pouvons utiliser ~
comme un raccourci dans certains scénarios quotidiens.
Nous savons que ~
convertit -1
en 0
, nous pouvons donc l'utiliser avec indexOf
sur le tableau.
Indice de
let items = ['foo', 'bar', 'baz'];
let el = 'a';
if (items.indexOf('a') !== -1) {}
or
if (items.indexOf('a') >= 0) {}
peut être réécrit comme
if (~items.indexOf('a')) {}
~ Décimal
L'exemple suivant illustre l'utilisation de l'opérateur NOT (~) au niveau du bit sur les nombres décimaux.
Pour garder l'exemple simple, le nombre décimal 3.5
sera utilisé, en raison de sa représentation simple au format binaire.
let number = 3.5;
let complement = ~number;
Le résultat du nombre de complement
est égal à -4;
Expression | Valeur binaire | Valeur décimale |
---|---|---|
3.5 | 00000000 00000010.1 | 3.5 |
~ 3,5 | 11111111 11111100 | -4 |
Pour simplifier cela, nous pouvons le considérer comme fonction 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