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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow