JavaScript의 Math.clz32() 함수는 주어진 숫자를 32비트 이진수로 표현했을 때 앞쪽에 연속해서 나타나는 0의 개수(leading zero bits)를 반환합니다. 여기서 'clz'는 'Count Leading Zeros(선행 0 개수 세기)'의 약자입니다.
예를 들어, 숫자 1을 32비트 이진수로 표현하면 00000000000000000000000000000001이 됩니다. 맨 앞에 0이 31개 있으므로 Math.clz32(1)은 31을 반환합니다.
문법(Syntax)
Math.clz32(x)
매개변수: x — 선행 0 비트의 개수를 계산할 숫자입니다. 정수가 아닌 값은 내부적으로 32비트 정수로 변환되어 처리됩니다.
예제(Example)
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var result = Math.clz32(31);
document.write("Result: " + result);
</script>
</body>
</html>
출력 결과(Output)
Result: 27
결과 설명
숫자 31을 32비트 이진수로 표현하면 00000000000000000000000000011111입니다. 뒤쪽 5비트만 1이고 나머지 앞 27비트가 모두 0이기 때문에 결과값으로 27이 반환됩니다.
다양한 입력값에 따른 반환값
| 입력값 | 반환값 | 설명 |
|---|---|---|
| Math.clz32(0) | 32 | 모든 비트가 0 |
| Math.clz32(1) | 31 | 마지막 비트만 1 |
| Math.clz32(31) | 27 | 뒤 5비트가 1 |
| Math.clz32(1000) | 22 | 10비트 사용 |
| Math.clz32(-1) | 0 | 음수는 2의 보수 표현으로 모든 비트가 1 |
| Math.clz32(4294967295) | 0 | 32비트 최대값, 선행 0 없음 |
활용 사례
Math.clz32()는 단순히 비트를 분석하는 용도 외에도 다양하게 활용됩니다. 대표적인 예로 두 정수 중 더 큰 쪽의 비트 길이를 빠르게 계산하여 고성능 수학 연산 라이브러리에서 자릿수를 판단할 때 사용됩니다. 또한 로그 함수의 근사 계산이나 해시 알고리즘 최적화 등 저수준 성능 튜닝에도 유용하게 활용됩니다.