BITSTRING(3)

명칭
bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset, bit_set, bitstr_size, bit_test - 비트열조작 매크로

서식
<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>
    ...
    #define LPR_BUSY_BIT		0
    #define LPR_FORMAT_BIT		1
    #define LPR_DOWNLOAD_BIT	2
    ...
    #define LPR_AVAILABLE_BIT	9
    #define LPR_MAX_BITS		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);
    	}
    }

관련 항목
malloc(3)

역사
bitstring 함수는 4.4BSD 그리고 처음 등장했습니다.