# MATH_CountLeadingZeros

## 構文

      #include <nitro/math.h>

      u32 MATH_CountLeadingZeros( u32 x );
      u32 MATH_CLZ( u32 x );

## 引数

x | 演算する数値

## 返り値

最上位から0のビットが連続でいくつあるかを返します。

## 説明

x を2進数32ビットで表現した際に、最上位ビットから0が何ビット続くかを求める関数です。0x80000000 は 0、0 は 32 となります。
内部実装は ARM9 の ARM コードで使用可能な CLZ 命令をラップしたインライン関数となっており、コンパイラによって1命令に展開されます。ARM7 及び ARM9 の Thumb コードにおいては通常の関数が呼び出されます。
そのため、プログラム中で ARM, thumb を切り替える場合には、`#pragma thumb on` を使用せず、`#include <twl/code16.h>` を使用するようにしてください。
`code16.h` については、ヘッダファイル解説のページに説明があります。

`MATH_CLZ` は `MATH_CountLeadingZeros()`の別名です。

なお、末尾から続く 0 を数える場合は`MATH_CountTrailingZeros()`で求めることが可能です。

## 参照

`MATH_CountTrailingZeros, MATH_ILog2
`

## 履歴

2009/04/28 thumb モードへの切り替え方法について追記
2006/01/10 リンクミス修正
2005/12/22 MATH_CountTrailingZeros()へのリンクを追加
2005/06/02 & を &amp; に修正
2004/12/14 初版