BITSTRING(3) FreeBSD ライブラリ関数マニュアル BITSTRING(3)
名称
bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset, bit_set, bitstr_size, bit_test − ビット列操作マクロ |
書式
#include <bitstring.h> bitstr_t * |
bit_alloc(int nbits); void |
bit_decl(bitstr_t *name, int nbits); void |
bit_clear(bitstr_t *name, int bit); void |
bit_ffc(bitstr_t *name, int nbits, int *value); void |
bit_ffs(bitstr_t *name, int nbits, int *value); void |
bit_nclear(bitstr_t *name, int start, int stop); void |
bit_nset(bitstr_t *name, int start, int stop); void |
bit_set(bitstr_t *name, int bit); int |
bitstr_size(int nbits); int |
bit_test(bitstr_t *name, int bit); |
解説 |
これらのマクロはビット列を操作します。 マクロ bit_alloc() は、 nbits 個のビットを格納するのに十分な空間を指す型 ‘‘bitstr_t *’’ のポインタを返します。または、空間が利用できない場合は NULL を返します。 マクロ bit_decl() は、 nbits 個のビットを格納するのに十分な空間をスタック に割り付けます。 マクロ bitstr_size() は、 nbits 個のビットを格納するのに必要な、型 bitstr_t の要素の数を返します。これはビット列をコピーするのに便利です。 マクロ bit_clear() とマクロ bit_set() は、ビット列 name の中の、0 を起点 として bit 番目のビットをクリアまたは設定します。 マクロ bit_nset() とマクロ bit_nclear() は、ビット列 name の中の start か ら stop までの (0 を起点として番号付けした) ビットをセットまたはクリアし ます。 マクロ bit_test() は、ビット列 name 内で、0 を起点として bit 番目のビット がセットされている場合、評価結果は 0 でない値になり、それ以外の場合は 0 と評価されます。 マクロ bit_ffs() は、 name が参照する nbits ビットの配列のなかで、セット されたビットが最初に現れる位置を 0 を起点として番号付けした値を、 value が参照する位置に格納します。どの ビットも設定されていない場合、 value が参照する位置に、−1 が設定されま す。 マクロ bit_ffc() は、 name が参照する nbits ビットの配列のなかで、セット されていないビットが最初に現れる位置を、 0 を起点として番号付けした値を、 value が参照する位置に格納します。どのビットも設定されている場合、 value が参照する位置に、−1 が設定されます。 これらのマクロの引数は、 1 回だけ評価され、安全な副作用がある可能性があり ます。 |
例
#include <limits.h> #include <bitstring.h> ... |
0 |
|||||
1 |
|||||
2 |
... |
9 |
|||||
10 |
make_lpr_available() |
bitstr_t bit_decl(bitlist, LPR_MAX_BITS); |
||||
... |
||||
bit_nclear(bitlist, 0, LPR_MAX_BITS - 1); |
||||
... |
||||
if (!bit_test(bitlist, LPR_BUSY_BIT)) { |
||||
bit_clear(bitlist, LPR_FORMAT_BIT); |
||||
bit_clear(bitlist, LPR_DOWNLOAD_BIT); |
||||
bit_set(bitlist, LPR_AVAILABLE_BIT); |
||||
} |
} |
関連項目
歴史
bitstring 関数は 4.4BSD ではじめて登場しました。 FreeBSD 10.0 July 19, 1993 FreeBSD 10.0 |