숫자를 다루는 연산을 할 때, 소수점을 버릴 경우 Math.trunc()연산자를 사용한다. 비트 연산에서는 주로 쓰이는 틸트 연산자 중 이중 틸트 연산자의 경우 숫자의 소수점을 버리는 방법으로 알고리즘 문제를 풀이를 할 시 간단하게 사용할 수 있다.
1️⃣ ~
(비트 반전 연산자)
~
는 비트 반전 연산자(bitwise NOT)라고 부른다. ~
연산자는 숫자의 모든 비트를 반전시킨다.
- 0은 1로, 1은 0으로 바뀐다.
예를 들어, 8비트로 표현된 숫자 5가 있다고 하면, 이진수로는 00000101이다. ~5를 연산하면 각 비트가 반전되어 11111010이 된다. 11111010을 십진수로 표현하면 -6이다.
- ~5 = -6
2️⃣ ~~
(이중 틸트 연산자)
~
는 비트 반전 연산자인 ~
를 두 번 적용한 것이다.
- 숫자의 소수점을 버리는 방법으로 활용된다.
- 소수점을 가지는 실수(float)를 정수(integer)로 변환하는데 사용된다.
숫자의 소수점을 버리는 경우에는, Math.trunc( )와 같은 함수와 유사한 역할을 한다.
☑️ 이중 틸트 연산자와 Math.trunc( ) 메서드 비교
~
연산자는 비트 연산을 하기 때문에 성능 면에서 더 빠를 수도 있지만, 짧은 코드에서는 큰 차이가 없을 수 있다.
코드의 가독성을 중요시하는 경우에서는 Math.trunc()를 사용하는 편이 좋지만 짧고 간단한 코드를 원할 경우에는 ~~
연산자를 써도 좋다. 단, 32비트 정수의 범위에서만 정확하게 동작하므로 매우 큰 숫자에서는 오버플로우가 발생할 수 있으니 주의!
- ~~4.7 = 4
- ~~-(4.7) = -4
- ~0.123 = 0
'JavaScript. > Vanila JS' 카테고리의 다른 글
한글 입력시 두번 이벤트 발생되는 현상 - onKeyPress, onKeyDown, onKeyup (1) | 2024.03.17 |
---|---|
이벤트 리스너 | 렌더링시 display 속성 가져오지 못하는 문제 (0) | 2024.02.28 |
구조분해할당 (0) | 2024.02.28 |