For the complete documentation index, see llms.txt. This page is also available as Markdown.

bitstring(3)

bit_alloc — 位串操作函数与宏

名称

bit_alloc, bit_clear, bit_count, bit_decl, bit_ffc, bit_ffs, bit_ff_at, bit_ffc_at, bit_ffs_at, bit_ffc_area, bit_ffs_area, bit_ff_area_at, bit_ffc_area_at, bit_ffs_area_at, bit_nclear, bit_nset, bit_ntest, bit_set, bit_test, bitstr_size

概要

#include <bitstring.h>

bitstr_t *bit_alloc(size_t nbits);
void bit_decl(bitstr_t *name, size_t nbits);
void bit_clear(bitstr_t *name, size_t bit);
void bit_count(bitstr_t *name, size_t count, size_t nbits, ssize_t *value);
void bit_ffc(bitstr_t *name, size_t nbits, ssize_t *value);
void bit_ffs(bitstr_t *name, size_t nbits, ssize_t *value);
void bit_ffc_at(bitstr_t *name, size_t start, size_t nbits, ssize_t *value);
void bit_ffs_at(bitstr_t *name, size_t start, size_t nbits, ssize_t *value);
void bit_ff_at(bitstr_t *name, size_t start, size_t nbits, int match, ssize_t *value);
void bit_ffc_area(bitstr_t *name, size_t nbits, size_t size, ssize_t *value);
void bit_ffs_area(bitstr_t *name, size_t nbits, size_t size, ssize_t *value);
void bit_ffc_area_at(bitstr_t *name, size_t start, size_t nbits, size_t size, ssize_t *value);
void bit_ffs_area_at(bitstr_t *name, size_t start, size_t nbits, size_t size, ssize_t *value);
void bit_ff_area_at(bitstr_t *name, size_t start, size_t nbits, size_t size, int match, ssize_t *value);
bit_foreach(bitstr_t *name, size_t nbits, size_t var);
bit_foreach_at(bitstr_t *name, size_t start, size_t nbits, size_t var);
bit_foreach_unset(bitstr_t *name, size_t nbits, size_t var);
bit_foreach_unset_at(bitstr_t *name, size_t start, size_t nbits, size_t var);
void bit_nclear(bitstr_t *name, size_t start, size_t stop);
void bit_nset(bitstr_t *name, size_t start, size_t stop);
int bit_ntest(bitstr_t *name, size_t start, size_t stop, int match);
void bit_set(bitstr_t *name, size_t bit);
int bitstr_size(size_t nbits);
int bit_test(bitstr_t *name, size_t bit);

描述

这些宏用于操作位串。

bit_alloc 函数返回一个类型为 "bitstr_t *" 的指针,指向足以存储 nbits 位的内存空间;若无可用空间则返回 NULL。若成功,返回的位串在初始化时所有位都被清零。

bit_decl 宏声明一个足以存储 nbits 位的位串。bit_decl 可用于在结构体定义中包含静态大小的位串,或在栈上创建位串。使用此宏的用户需负责位串的初始化,通常通过包含结构体的全局初始化或使用 bit_nsetbin_nclear 函数完成。

bitstr_size 宏返回存储 nbits 位所需的字节数。这对复制位串很有用。

bit_clearbit_set 函数分别清零或置位位串 name 中以零为基的编号位 bit

bit_nsetbit_nclear 函数分别置位或清零位串 name 中从 startstop 的以零为基的编号位。

如果位串 name 中以零为基的编号位 bit 已置位,bit_test 函数求值为非零值,否则为零。

如果位串 name 中从 startstop 的以零为基的编号位全部具有值 matchbit_ntest 函数求值为非零值。

bit_ffc 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中第一个未置位位的以零为基的编号。如果所有位都已置位,value 所引用的位置被设置为 -1。

bit_ffs 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中第一个已置位位的以零为基的编号。如果没有已置位的位,value 所引用的位置被设置为 -1。

bit_ffc_at 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后,第一个未置位位的以零为基的编号。如果 start 起或之后所有位都已置位,value 所引用的位置被设置为 -1。

bit_ffs_at 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后,第一个已置位位的以零为基的编号。如果 start 之后没有已置位的位,value 所引用的位置被设置为 -1。

bit_ff_at 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后,第一个具有值 match 的位的以零为基的编号。如果 start 之后没有匹配该值的位,value 所引用的位置被设置为 -1。

bit_ffc_area 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,开始一段至少 size 个未置位位的连续未置位序列的第一个位的以零为基的编号。如果找不到指定 size 的连续未置位序列,value 所引用的位置被设置为 -1。

bit_ffs_area 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,开始一段至少 size 个已置位位的连续已置位序列的第一个位的以零为基的编号。如果找不到指定 size 的连续已置位序列,value 所引用的位置被设置为 -1。

bit_ffc_area_at 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后,开始一段至少 size 个未置位位的连续未置位序列的第一个位的以零为基的编号。如果 start 起或之后找不到指定 size 的连续未置位序列,value 所引用的位置被设置为 -1。

bit_ffs_area_at 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后,开始一段至少 size 个已置位位的连续已置位序列的第一个位的以零为基的编号。如果 start 起或之后找不到指定 size 的连续已置位序列,value 所引用的位置被设置为 -1。

bit_ff_area_at 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后,开始一段至少 size 个位且所有位均具有值 match 的连续位序列的第一个位的以零为基的编号。如果 start 起或之后找不到指定 size 的此类连续位序列,value 所引用的位置被设置为 -1。

bit_count 函数在 value 所引用的位置中存储 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后已置位位的数量。

bit_foreach 宏按正向遍历 name 所引用的 nbits 位数组中所有已置位位,依次将每个位置赋值给 var

bit_foreach_at 宏按正向遍历 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后所有已置位位,依次将每个位置赋值给 var

bit_foreach_unset 宏按正向遍历 name 所引用的 nbits 位数组中所有未置位位,依次将每个位置赋值给 var

bit_foreach_unset_at 宏按正向遍历 name 所引用的 nbits 位数组中,从以零为基的位索引 start 起或之后所有未置位位,依次将每个位置赋值给 var

位串宏中的参数仅求值一次,可以安全地带有副作用。

实例

参见

malloc(3), stdbit(3), bitset(9)

历史

bitstring 函数首次出现于 4.4BSD。

最后更新于

这有帮助吗?