Często zachodzi potrzeba działania na polach bitowych. Pola bitowe przydają się do zwartego reprezentowania informacji, a zatem do zmniejszania obciążenia pamięci. Są często używane z urządzeniami sprzętowymi i przy grafice komputerowej. Używa się ich także w wielu podstawowych algorytmach.
Klasa bitów w przykładowym pliku zawiera wiele metod działających na polach bitowych. Klasa ta może działać na polach bitowych o dowolnej długości. Zmienna składowa m_cbit oznacza liczbę bitów w polu bitowym. Rzeczywiste bity są przechowywane w ciągu słów podwójnych w tablicy m_rdgw.
Warto zapamiętać podczas oglądania kodu, że ze względu na to, że klasa działa na polach bitowych o dowolnej długości, metody rozdzielają działania na bitach na porcje danych o wielkości podwójnego słowa. Na przykład metoda Get sprawdza, czy jest ustawiony dany bit. W tym celu dowiaduje się, w którym podwójnym słowie występuje ten bit, dzieląc numer bitu przez liczbę bitów w podwójnym słowie:
idw = ibit / cbitDWORD;
Następnie tworzy maskę bitową i za pomocą bitowej operacji AND sprawdza, czy dany bit został ustawiony:
if(m_rgdw[idw] & DwMask(ibit)) return(TRUE);
Funkcja DwMask zwraca maskę bitową dla danego bitu. Tak jak w wypadku obliczeń w metodzie Get, funkcja ta działa na polach bitowych o dowolnej długości. Najpierw określamy położenie bitu w podwójnym słowie. Tym razem używamy funkcji mod do znalezienia względnej pozycji w danym polu bitowym. Następnie używamy przesunięcia bitowego w celu skonstruowania maski.
return 01L « (ibit % cbitDWORD);
Pozostały kod jest nieskomplikowany i korzysta z eleganckich, wydajnych technik przenoszenia bitów między polami (na przykład metoda ShiftLeft) oraz pobierania i ustawiania bitów. Warto obejrzeć ten kod w wolnym czasie, którego pewnie mamy bardzo dużo.
Dalej wydrukowano plik kodu źródłowego dla klasy bitów, bits.cpp jest plikiem kodu C++. Liczby w komentarzach oznaczają numery wskazówek z części I. Plik ten i odpowiadający mu plik projektu Visual C++ można znaleźć w folderze bits na CD--ROM-ie dołączonym do książki. Inną wersję bitów używanych przez klasę drg można znaleźć na stronie www.essentialtechniques.com.