Sök…


Introduktion

Operatören ~ tittar på den binära representationen av värdena för uttrycket och utför en bitvis negationsoperation på det.

Alla siffror som är 1 i uttrycket blir 0 i resultatet. Alla siffror som är en 0 i uttrycket blir en 1 i resultatet.

~ Heltal

Följande exempel illustrerar användningen av den bitvisa INTE (~) operatören på heltal.

let number = 3;
let complement = ~number;

Resultatet av complement lika med -4;

Uttryck Binärvärde Decimalvärde
3 00000000 00000000 00000000 00000011 3
~ 3 11111111 11111111 11111111 11111100 -4

För att förenkla detta kan vi tänka på det som 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

~ ~ Operatör

Double Tilde ~~ kommer att utföra INTE operation två gånger.

Följande exempel illustrerar användningen av den bitvisa INTE (~~) operatören på decimalnummer.

För att göra exemplet enkelt kommer decimalnumret 3.5 att användas, orsak till att det är en enkel representation i binärt format.

let number = 3.5;
let complement = ~number;

Resultatet av complement lika med -4;

Uttryck Binärvärde Decimalvärde
3 00000000 00000000 00000000 00000011 3
~~ 3 00000000 00000000 00000000 00000011 3
3,5 00000000 00000011.1 3,5
~~ 3,5 00000000 00000011 3

För att förenkla detta kan vi tänka på det som funktioner f2(n) = -(-(n+1) + 1) och g2(n) = -(-(integer(n)+1) + 1) .

f2 (n) lämnar heltalet som det är.

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) kommer i huvudsak att runda positiva siffror nedåt och negativa siffror upp.

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

Konvertera icke-numeriska värden till siffror

~~ Kan användas på icke-numeriska värden. Ett numeriskt uttryck konverteras först till ett nummer och utförs sedan bitvis INTE operation på det.

Om uttrycket inte kan konverteras till numeriskt värde konverteras det till 0 .

true och false boolvärden är undantag, där true presenteras som numeriskt värde 1 och false som 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

short

Vi kan använda ~ som en kortfattning i vissa vardagliga scenarier.

Vi vet att ~ konverterar -1 till 0 , så vi kan använda det med indexOf på array.

index för

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

or

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

kan skrivas om som

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

~ Decimal

Följande exempel illustrerar användningen av den bitvisa INTE (~) -operatören på decimaltal.

För att göra exemplet enkelt kommer decimalnumret 3.5 att användas, orsak till att det är en enkel representation i binärt format.

let number = 3.5;
let complement = ~number;

Resultatet av complement lika med -4;

Uttryck Binärvärde Decimalvärde
3,5 00000000 00000010.1 3,5
~ 3,5 11111111 11111100 -4

För att förenkla detta kan vi tänka på det som 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow