Javascript Tilde(~)연산자
Post

Javascript Tilde(~)연산자

알고리즘 문제를 풀다가 다른사람 풀이에 Tilde(~)연산자를 사용해서 문제를 더욱 간단하게 해결하는 것을 보았다.

그래서 Tilde 연산자 사용법을 알아보려한다.

Tilde(~) 연산자

~ 연산자를 사용하면 내부적으로 32비트 정수로 변환한 후 NOT 연산자를 실행한다. 이는 2의보수-(n+1)값과 같다.

이러한 성질을 이용하여 참,거짓 처리를 할 수 있다. indexOf와 함께 사용하여 찾는값이 포함되어있는지 확인할 수 있다.
값이 존재하면 -(n+1) 값을 반환하므로 true처리 되고, 값이 없다면 0을 반환하므로 false 처리된다.

1
2
3
4
5
6
7
8
    const str = "hi";

    if(~str.indexOf("i")){
        console.log('true');
    }else{
        console.log('false');
    }
    //결과 : true

Doble Tilde(~~) 연산자

Tilde 연산자를 두개 연속으로 사용하면 숫자의 소수점 이하 숫자들을 버려준다. Math.floor()와 같은 역할을 하므로 코드량을 줄일 수 있다. 속도 측면에서도 Math.floor보다 빠르지만, Math.floor()보다는 가독성을 떨어뜨릴 수 있다.

1
2
    console.log(~~23.23424); //23
    console.log(Math.floor(23.23424)); //23

음수는 결과값이 달라질 수 있으므로 조심해야한다.