수색…
소개
~ 연산자는 표현식 값의 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
변환됩니다.
true
및 false
bool 값은 예외이며 true
는 숫자 값 1
되고 false
는 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
약자
우리는 ~
을 일부 일상 시나리오에서 속기로 사용할 수 있습니다.
~
는 -1
을 0
변환하므로 배열의 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