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_CLZMATH_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 初版