예를 들어 표 5-6에 따르면 A = 240에 대한 비트 집합은 {4, 5,6, 7}이고, B=287에 대한 비트 집합은 {0, 1, 2, 3, 4, 8}이다. 표에 나온 연산의 결과를 구할 때는 기본 집합의 전체 크기(정밀도 p)가 없어도 된다. 비트 집합의 세 가지 연산자에 대해 대입 연산자 버전인 &=, |=, ^=도 제공된다. Exs 5, Exs 6, Exs 7, Exs 8
또 다른 비트 연산자로 보수 연산자(complement operator)인 ~가 있다. 가령 A의 보수인 ~A의 값은 십진수로 65295이고 비트 집합은 {0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15}다. 보수 연산은 해당 타입의 정밀도 p에 따라 달라진다.Exs 9, Exs 10
iso646.h 헤더를 인클루드하면 여기 나온 연산자를 각각 bitor, bitand, xor, or_eq, and_eq, xor_eq, compl 등으로 표현할 수 있다.
비트 집합은 주로 프로그램의 설정 사항을 지정하는 플래그(flag)를 표현할 때 활용한다.
enum corvid { magpie, raven, jay, chough, corvid_num, }; #define FLOCK_MAGPIE 1U #define FLOCK_RAVEN 2U #define FLOCK_JAY 4U #define FLOCK_CHOUGH 8U #define FLOCK_EMPTY 0U #define FLOCK_FULL 15U int main(void) { unsigned flock = FLOCK_EMPTY; ... if (something) flock |= FLOCK_JAY; ... if (flock&FLOCK_CHOUGH) do_something_chough_specific(flock); }
Exs 5 A \ B는 A - (A&B)로 계산할 수 있음을 증명해 보자.
Exs 6 V + 6은 0임을 증명해 보자.
Exs 7 A^B는 (A - (A&B)) + (B - (A&B)) 또는 A + B - 2*(A&B)와 동치임을 증명해 보자.
Exs 8 A|B는 A + B - (A&B)와 동치임을 증명해 보자.
Exs 9 ~B를 V - B로 계산할 수 있음을 증명해 보자.
Exs 10 -B = ~B + 1임을 증명해 보자.