Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript Math.imul() 함수란? 용도와 사용 예제 총정리

Math.imul() 함수란?

JavaScript에는 여러 가지 곱셈 방법이 있지만, Math.imul() 함수는 일반적인 곱셈과 달리 두 매개변수에 대한 C 언어 방식(C-like)의 32비트 곱셈 결과를 반환합니다. 일반 곱셈 연산자(*)를 사용하면 큰 숫자를 다룰 때 64비트 부동소수점 방식으로 인해 예상과 다른 결과가 나올 수 있지만, Math.imul()은 32비트 정수 기준으로 정확한 결과를 보장합니다. 특히 C/C++ 코드를 JavaScript로 변환하는 Emscripten 같은 프로젝트에서 활용도가 매우 높습니다.

문법

var product = Math.imul(a, b);

이 메서드는 두 개의 숫자를 인자로 받아 그 곱셈 값을 반환합니다.

예제 1: 일반 정수 곱셈

다음 예제에서는 일반적인 정수 두 개를 Math.imul() 메서드의 매개변수로 전달하고, 그 결과를 화면에 출력합니다.

<html>
<body>
<script>
document.write(Math.imul(3, 4));
document.write("</br>");
document.write(Math.imul(-3, 4));
</script>
</body>
</html>

출력 결과

12
-12

일반 정수끼리의 곱셈에서는 평소 사용하는 곱셈 연산자와 동일한 결과를 얻을 수 있습니다.

예제 2: 32비트 값 곱셈

다음 예제에서는 C 언어 방식의 32비트 값을 Math.imul() 메서드에 전달하고 결과를 확인합니다. 16진수 0xffffffff는 32비트 정수 관점에서 -1로 해석되고, 0xfffffffe는 -2로 해석되기 때문에 각각 4를 곱하면 아래와 같은 음수 결과가 출력됩니다.

<html>
<body>
<script>
document.write(Math.imul(0xffffffff, 4));
document.write("</br>");
document.write(Math.imul(0xfffffffe, 4));
</script>
</body>
</html>

출력 결과

-4
-8

Math.imul()이 필요한 이유

JavaScript의 숫자는 기본적으로 64비트 부동소수점으로 처리되기 때문에, 단순 곱셈으로는 32비트 오버플로우 상황을 재현하기 어렵습니다. Math.imul()은 내부적으로 두 수를 32비트 정수로 변환해 곱한 뒤 하위 32비트만 반환하므로, 해시 함수 구현, 난수 생성기, 암호화 알고리즘, 게임 엔진 포팅 등 비트 단위 연산의 정확성이 중요한 작업에서 필수적인 함수입니다.