234

234



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.

Pliki

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.


Wyszukiwarka

Podobne podstrony:
gie?dy oun003 KOLO ANATOMIA - OUN :    Na początek trochę z Autonomika =) (ponoć przy
skanowanie0001 KOŁO ANATOMIA - OUN Na początek trochę z Autonomika =1 (ponoć przyda sie do egzaminu)
skanowanie0008 KOŁO ANATOMIA - OUN Na początek trochę z Antonomika -) (ponoć przyda sie do egzaminu)
img39 Przeglądanie tablic Bardzo często zachodzi potrzeba wykonania jakiejś operacji na wszystkich e
Strona3 23 W procesie projektowania często zachodzi potrzeba kontroli parametrów geometrycznych mod
P6010221 Więcej o funkcjach; wskaźniki do funkcji Często zachodzi potrzeba uźycia4unkcji jako argume
Obiekty trwałe a Często zachodzi potrzeba dłuższego przechowania niektórych obiektów (np. między
IMG93 (3) Jeżeli wizualizacja nie działa, na pewno brakuje któregoś z elementów. Spytaj się sam sie

więcej podobnych podstron