● fixed X - 関数リファレンス
ビットの検索
int __stdcall fixed_bsf(PFIXEDVAL pval ,int width );
int __stdcall fixed_bsr(PFIXEDVAL pval ,int width );
引数
引数名 | 意味 |
pval | 対象の数値が格納されている FIXEDVAL領域の先頭アドレス |
width | pval の指す FIXEDVAL値の数値幅(バイト単位) |
戻り値
LSB をゼロとするビットインデックス(ビットの位置)を返します。
ビットが見つからなかった場合は -1 を返します。
説明
pval の指す領域の中から 1 のビットを検索し、その位置を返します。1 のビットが複数ある場合は、最初に発見したビットの位置を返します。
関数fixed_bsf は LSB から MSB に向かって検索し、関数fixed_bsr は MSB から LSB に向かって検索します。
引数 pval の指す領域は、width が示す数値幅以上のサイズを持っている必要があり、width は 4 の倍数である必要があります。
例.
/*
unsigned FIXEDVAL値が 2^n であるかをチェックする
戻り値:
2^n の場合は n を返す
それ以外は -1 を返す
*/
int check_binary(PFIXEDVAL pval,int width)
{
int n;
return ((n = fixed_bsr(pval,width)) >= 0 &&
(fixed_bsf(pval,width) == n))? n : -1;
}