Javascript

[Javascript] Tilde? Tilt? 틸드 연산자 사용법 (feat.물결 ~)

jojv 2023. 5. 31. 11:18
728x90
반응형

안녕하세요!

틸드(~)연산자!! 바로 알아봅시다!!!

 

 

💫Tilde (틸드)

틸드는 비트 단위 연산자로 비트를 반전시키는 기능을 합니다.

피연산자를 32비트 정수로 변환합니다. 이해가 안되서 예제를 찾아봤습니다.

const a = 5;     // 00000000000000000000000000000101
const b = -3;    // 11111111111111111111111111111101

console.log(~a); // 11111111111111111111111111111010
// Expected output: -6

console.log(~b); // 00000000000000000000000000000010
// Expected output: 2

후... 역시나 어렵습니다만, 

간단하게 말하자면!

  00000001 (= 1)  여기에 틸드 연산자를 사용하면

~00000001 (= ~1) 비트 반전 go go!!

  11111110   (= -2) 이런식의 답이 나오는 것입니다!!

 

32비트 정수 피연산자는 2의 보수에 따라 반전됩니다.

따라서, 틸드를 사용하여 연산하면  -(x+1) 의 결과를 도출합니다.

 

참,거짓 처리

  • indexOf, charAt, search, findIndex

위 메소드는 주로 검색과 관련된 메소드 중에서 존재하면 해당 인덱스를, 존재하지 않는다면 -1을 반환합니다.

-1을 반환한다는 점을 틸드 연산자와 사용하여 참거짓 처리를 할 수 있습니다.

  11111111 (= -1)

~11111111 (= ~-1)

  00000000 (= 0)

0은 형변환 했을 때 false로 취급되는 falsy value 이기에,

~-1 === 0 이라는 점으로 조건식을 간결하게 만들 수 있겠습니다.

const str = 'Hello';
if(str.indexOf('H') !== -1) console.log('있다');
// ~ 연산자를 쓰면 아래와 같이 줄일 수 있다.
if(~str.indexOf('H')) console.log('있다');

 

💫~~ , Tilde 틸드 두개 사용법

기본적으로  틸드 연산자는 32비트 정수로 변환하기 때문에 소수점 아래 비트를 버립니다.

그래서 틸드 한개 사용시, 숫자의 소수점을 버리게 되고,

연속되어 있는 틸드 한개가 다시 연산하여, 결과적으로 원래 상태로 돌아가게 됩니다.

그래서 Math.floor()와 동일하게 사용가능합니다!

~~123.123 // 123
Math.floor(123.123) // 123

단, 음수에서는 결과값이 달라질 수 있으니 꼭 주의 하셔야 합니다!!

 

 

잘 활용하면 편리한 Tilde 알아보았습니다!

글 읽어주셔서 감사합니다~

728x90