Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015년 7월.
Math.clz32() 정적 메서드는 숫자의 32비트 이진 표현에서 선행 0 비트의 갯수를 반환합니다.
숫자입니다.
32비트 이진 표현에서 x 의 선행 0 비트 수를 반환합니다.
clz32 는 CountLeadingZeros32 의 약자입니다.
만일 x 가 숫자가 아니라면, 이는 가장 먼저 숫자로 변환이 되고 그 다음 32비트의 기호가 없는 정수로 변환됩니다.
변환된 32비트의 기호 없는 정수가 0 이라면 32 가 반환됩니다. 왜냐하면 모든 비트는 0 이기 때문입니다. 만일 (숫자가 231 보다 크거나 같은 경우처럼) 가장 큰 비트가 1 이라면 0 이 반환됩니다.
이 함수는 Emscripten 처럼 JS로 컴파일되는 체계에 특히 더 유용하게 사용됩니다.
현재는 선행 비트 연산("clo" 가 아니라 "clon" 이라고 부르는데, 이는 "clo" 와 "clz" 가 영어를 사용하지 않는 사람들에게 매우 유사하게 느껴질 수 있기 때문입니다.)을 위한 Math.clon 함수는 없습니다. 하지만 clon 함수는 쉽게 비트를 숫자로 연산하어 Math.clz32 의 결괏값으로 전달됩니다. 이는 1의 반대가 0이고 그 반대도 마찬가지이기 때문에 작동합니다. 따라서 비트를 반전시키면 0의 측정된 수량( Math.clz32 에서)이 반전되어 Math.clz32 가 0 대신 1의 개수를 세게 됩니다.
다음 32비트 예제를 살펴보세요.
이 로직을 사용하면 clon 함수는 다음과 같이 생성됩니다.
더 나아가, 이 기술은 아래와 같이 점프가 없는 "후행 0 세기" 함수를 만드는 데에 확장하여 사용할 수 있습니다. ctrz 함수는 정수와 그 2의 보수의 비트 AND 연산을 수행합니다. 2의 보수가 작동하는 방식에 따라, 모든 후행 제로는 1로 변환되고, 1을 더할 때 (원래는 1이었던) 첫번째 0 에 도달할 때까지 올림이 발생합니다. 이 비트보다 높은 모든 비트는 동일하게 유지되며 원래 정수 비트의 역수입니다. 따라서 원래 정수와 비트 AND 연산을 할 때, 더 높은 모든 비트는 0 이 되며, 이는 clz 로 카운트될 수 있습니다. 후행 제로의 수와 처음 1 비트, 그리고 clz 로 세어진 선행 비트의 합은 32가 됩니다.
"후행 0 세기" 함수는 다음처럼 동작합니다.
이 헬퍼 함수들은 잠재적인 성능 개선을 위해 asm.js 모듈을 만들 수 있습니다.
| ECMAScript® 2027 Language Specification # sec-math.clz32 |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025년 2월 11일 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.