Zoeken…
Invoering
De operator ~ kijkt naar de binaire weergave van de waarden van de uitdrukking en voert een bitgewijze ontkenning uit.
Elk cijfer dat een 1 in de uitdrukking is, wordt een 0 in het resultaat. Elk cijfer dat een 0 is in de uitdrukking, wordt een 1 in het resultaat.
~ Geheel getal
Het volgende voorbeeld illustreert het gebruik van de operator bitwise NOT (~) op gehele getallen.
let number = 3;
let complement = ~number;
Het resultaat van het complement
is gelijk aan -4;
Uitdrukking | Binaire waarde | Decimale waarde |
---|---|---|
3 | 00000000 00000000 00000000 00000011 | 3 |
~ 3 | 11111111 11111111 11111111 11111100 | -4 |
Om dit te vereenvoudigen, kunnen we het beschouwen als functie 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
~~ Operator
Double Tilde ~~
voert twee keer bitwise NOT-bewerking uit.
Het volgende voorbeeld illustreert het gebruik van de operator Bitwise NOT (~~) op decimale getallen.
Om het voorbeeld eenvoudig te houden, wordt decimaal getal 3.5
gebruikt, vanwege de eenvoudige weergave in binair formaat.
let number = 3.5;
let complement = ~number;
Het resultaat van het complement
is gelijk aan -4;
Uitdrukking | Binaire waarde | Decimale waarde |
---|---|---|
3 | 00000000 00000000 00000000 00000011 | 3 |
~~ 3 | 00000000 00000000 00000000 00000011 | 3 |
3.5 | 00000000 00000011.1 | 3.5 |
~~ 3,5 | 00000000 00000011 | 3 |
Om dit te vereenvoudigen, kunnen we het beschouwen als functies f2(n) = -(-(n+1) + 1)
en g2(n) = -(-(integer(n)+1) + 1)
.
f2 (n) zal het gehele getal laten zoals het is.
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) zal in wezen positieve getallen naar beneden afronden en negatieve getallen naar boven.
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
Niet-numerieke waarden converteren naar getallen
~~
Kan worden gebruikt voor niet-numerieke waarden. Een numerieke uitdrukking zal eerst worden omgezet in een getal en vervolgens bitgewijs NIET worden uitgevoerd.
Als expressie niet kan worden geconverteerd naar numerieke waarde, wordt deze omgezet in 0
.
true
en false
bool-waarden zijn uitzonderingen, waarbij true
wordt weergegeven als numerieke waarde 1
en 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
shorthands
In sommige dagelijkse scenario's kunnen we ~
als afkorting.
We weten dat ~
-1
converteert naar 0
, dus we kunnen het gebruiken met indexOf
op array.
index van
let items = ['foo', 'bar', 'baz'];
let el = 'a';
if (items.indexOf('a') !== -1) {}
or
if (items.indexOf('a') >= 0) {}
kan worden herschreven als
if (~items.indexOf('a')) {}
~ Decimaal
Het volgende voorbeeld illustreert het gebruik van de operator bitwise NOT (~) op decimale getallen.
Om het voorbeeld eenvoudig te houden, wordt decimaal getal 3.5
gebruikt, vanwege de eenvoudige weergave in binair formaat.
let number = 3.5;
let complement = ~number;
Het resultaat van het complement
is gelijk aan -4;
Uitdrukking | Binaire waarde | Decimale waarde |
---|---|---|
3.5 | 00000000 00000010.1 | 3.5 |
~ 3,5 | 11111111 11111100 | -4 |
Om dit te vereenvoudigen, kunnen we het beschouwen als functie 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