수색…


소개

~ 연산자는 표현식 값의 2 진 표현식을보고 비트 식 부정 연산을 수행합니다.

표현식에서 1 인 임의의 숫자는 결과에서 0이됩니다. 표현식에서 0 인 임의의 숫자는 결과에서 1이됩니다.

~ 정수

다음 예제는 정수 NOT에 비트 NOT (~) 연산자를 사용하는 방법을 보여줍니다.

let number = 3;
let complement = ~number;

complement 번호의 결과는 -4입니다.

표현 이진 값 10 진수 값
00000000 00000000 00000000 00000011
~ 3 11111111 11111111 11111111 11111100 -4

이것을 단순화하기 위해 함수 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

~ ~ 연산자

Double Tilde ~~ 는 비트 NOT 연산을 두 번 수행합니다.

다음 예제에서는 10 진수에 대해 비트 NOT (~~) 연산자를 사용하는 방법을 보여줍니다.

예제를 단순하게 유지하기 위해 10 진수 3.5 가 사용됩니다. 이진 형식의 간단한 표현이기 때문입니다.

let number = 3.5;
let complement = ~number;

complement 번호의 결과는 -4입니다.

표현 이진 값 10 진수 값
00000000 00000000 00000000 00000011
~~ 3 00000000 00000000 00000000 00000011
3.5 00000000 00000011.1 3.5
~~ 3.5 00000000 00000011

이것을 단순화하기 위해 함수 f2(n) = -(-(n+1) + 1)g2(n) = -(-(integer(n)+1) + 1) 로 생각할 수 있습니다.

f2 (n) 은 그대로 정수를 남겨 둡니다.

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) 은 본질적으로 양수를 내림하고 음수를 위로합니다.

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

숫자가 아닌 값을 숫자로 변환

~~ 숫자가 아닌 값에 사용할 수 있습니다. 숫자 식은 먼저 숫자로 변환 된 다음 비트 NOT 연산을 수행합니다.

expression을 숫자 값으로 변환 할 수 없으면 0 변환됩니다.

truefalse bool 값은 예외이며 true 는 숫자 값 1 되고 false0

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

약자

우리는 ~ 을 일부 일상 시나리오에서 속기로 사용할 수 있습니다.

~-10 변환하므로 배열의 indexOf 와 함께 사용할 수 있습니다.

indexOf

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

or

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

다시 쓸 수있다.

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

~ 십진수

다음 예제에서는 10 진수에 대해 비트 NOT (~) 연산자를 사용하는 방법을 보여줍니다.

예제를 단순하게 유지하기 위해 10 진수 3.5 가 사용됩니다. 이진 형식의 간단한 표현이기 때문입니다.

let number = 3.5;
let complement = ~number;

complement 번호의 결과는 -4입니다.

표현 이진 값 10 진수 값
3.5 00000000 00000010.1 3.5
~ 3.5 11111111 11111100 -4

이것을 단순화하기 위해 함수 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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow