본문 바로가기
JavaScript./Vanila JS

JavaScript Math.trunc()메서드와 틸트(tilt) 연산자

by dev챙 2024. 8. 23.

숫자를 다루는 연산을 할 때, 소수점을 버릴 경우 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