Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
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 の個数を返します。
数値です。
x の 32 ビットバイナリー表現での先頭の 0 の個数。
clz32 は CountLeadingZeros32 の省略形です。
x が数値でない場合、まず数値に変換され、32 ビット符号なし整数値に変換されます。
変換された 32 ビット符号なし整数が 0 の場合、 32 が返されます。これは、すべてのビットが 0 であるためです。最上位ビットが 1 の場合(すなわち、数値が 231 以上の数値である場合)、 0 が返されます。
この関数は Emscripten のような JS にコンパイルするシステムに対して特に役に立ちます。
現在のところ、 "Count Leading Ones" を表す Math.clon はありません ("clo" ではなく "clon" と名付けられています、なぜなら "clo" と "clz" は特に英語を話さない人にとっては似すぎているからです)。しかし、 clon 関数は、数値のビットを逆数にして、その結果を Math.clz32 に渡すことで簡単に作ることができます。 1 の逆数は 0 であり、その逆も同様です。このように、ビットを逆数にすると、測定された 0 の量が (Math.clz32 からの) 逆数になり、 Math.clz32 はゼロの数を数えるのではなく、1 の数を数えるようになります。
以下の 32 ビットワード値を想定してみます。
この論理を使用すると、 clon 関数は次のように作成することができます。
さらに、このテクニックを拡張して、下記のようなジャンプのない "Count Trailing Zeros" 関数を作成することもできます。 ctrz 関数は、 2 の補数を持つ整数のビット単位の AND 演算を行います。 2 の補数にすることで、すべての末尾のゼロが 1 に変換され、 1 を加算すると、最初の 0 (元々は 1)に達するまで引き継がれます。それより上位のビットはすべてそのまま維持され、元の整数のビットの逆数となります。したがって、元の整数とビット単位の論理積を計算すると、上位のビットはすべて 0 となり、 clz でカウントできます。末尾のゼロの数に最初の 1 ビット、 clz でカウントされた上位ビットを足した合計は 32 です。
次に、 "Count Trailing Ones" 関数を次のように定義します。
これらのヘルパー関数は、パフォーマンスの向上を目的として、 asm.js モジュールにすることができます。
| ECMAScript® 2027 Language Specification # sec-math.clz32 |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年10月2日 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.