Page 293 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 293

이 프로그램에서 정의한 자료형과 매크로는 다음과 같습니다.



                         1.  BitSet형
                         BitSet는 비트 벡터를 나타내는 자료형입니다. typedef 선언으로 unsigned long형과 동일하게 정의합니다.
                         2.  BitSetNull
                         객체형 매크로 BitSetNull은 공집합의 비트 벡터를 나타내는 정수입니다. 모든 비트가 0(unsigned long
                         형)입니다.

                         3.  BitSetBits
                         객체형 매크로 BitSetBits는 비트 벡터에서 유효한 비트 수를 나타내는 정수입니다. 이 프로그램에서는
                         unsigned long형 비트의 아래쪽 32비트만을 사용하므로 값을 32로 정의합니다.
                         4. SetOf(no)
                         함수 형식의 매크로 SetOf는 유일한 원소가 no인 집합({no})을 표현하는 비트 벡터를 만듭니다. 다음 코드
                         와 그림을 보면서 좀 더 자세히 살펴보겠습니다.

                           #define SetOf(no)   ((BitSet)1 << (no))      /* 집합 {no} */


                         그림 7-13은 SetOf(5)를 사용해 집합 {5}를 만드는 과정을 나타낸 예입니다. 가장 아래쪽 비트의 값이 1인
                         집합 {0}에서 비트를 왼쪽으로 no만큼 시프트(shift)해 집합 {no}를 만듭니다.

                           가장 아랫부분 비트의 값이 1인 집합 {0}을 no만큼 왼쪽으로 시프트(shift)하면 집합 {no}를 얻을 수 있습니다.
                                    31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
                            집합{0}   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

                            집합{5}   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
                                    31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5   4  3  2  1  0
                                       [그림 7-13] SetOf(no) 사용해 집합 {no}를 만드는 과정



                        그러면 프로그램을 작성하면서 조금 더 자세히 알아보겠습니다. 실습 7-6은 비트 벡터 프로

                        그램의 소스입니다.






















                                                                                          07•집합  293
   288   289   290   291   292   293   294   295   296   297   298