39042

39042



168


ROZDZIAŁ 23. POWSZECHNE PRAKTYKI

logiczne “nie”

Oprócz tego są także przesunięcia (« om/. •*). Zastanówmy się teraz, jak je wykorzystać w praktyce. Załóżmy, że zajmujemy się jednobajtową zmienną.

unsigned char i ■ 2;

Z matematyki wiemy, że zapis binarny tej liczby wygląda tak (w ośmiobitowej zmiennej): 00000010. Jeśli teraz np. chcielibyśmy "zapalić" dnigi bit od lewej (tj. bit. którego zapalenie niejako “(kala" do liczby wartość 2®) powinniśmy użyć logicznego lub:

unsigned char i = 2; i I- 64;

Gdzie 64=2°. Odczytywanie wykonuje się za pomocą tzw. maski bitowej. Polega to na:

1.    wyzerowaniu bitów, które są nam w danej chwili niepotrzebne

2.    odpowiedniemu przesunięciu bitów, dzięki czemu tukany bit znajdzie się na pozycji pierwszego bitu od prawej

Do “wyłuskania” odpowiedniego bitu możemy posłużyć się operacją “i” czyli operatorem &. Wygląda to analogicznie do posługiwania się operatorem "lub":

unsigned char i ■ 3; /* bitowo: 00000011 */ unsigned char temp ■ 0;

temp - i b 1; /• sprawdzamy najmniej znaczący bit - czyli pierwszy z prawej */ if (temp) {

printf ("bit zapalony"); else {

printf ("bit zgaszony");

>

Jeśli nie władasz biegle kodem binarnym, tworzenie masek bitowych ułatwią ci przesunięcia bitowe. Aby uzyskać liczbę która ma za|xtlony bit o numerze n (bity są liczone od zera), przesuwamy bitowo w lewo jedynkę o n pozycji:

1 « n

Jeśli chcemy uzyskać licz!>ę\ w której zapalone są bity na pozycjach 1, m, n używamy sumy logicznej (“lub”):

(1 « 1) I (1 « m) I (1 « n)

Jeśli z kolei chcemy uzyskać liczl>ę gdzie zapalone są wszystkie bity p«»za n. odwracamy ją za pomocą operatora logicznej negacji

"(1 « n)

Warto władać biegle operacjami na bitach, ale początkujący mogą (po uprzednim przeanalizowaniu) zdefiniować następujące makra i ich używać:

/• Sprawdzeni® czy w liczbie k jest zapalony bit n •/

Sdefine IS_BIT_SET(k, n) ((k) * (1 « (n)))

/• Zapalenie bitu n w zmiennej k •/

tdefine SET.BIKk, n)    (k I- (1 « (n)))

/• Zgaszenie bitu n w zmiennej k •/

idefine RESET_BIT(k. n)    (k A- "(1 « (n)))



Wyszukiwarka

Podobne podstrony:
166ROZDZIAŁ 23. POWSZECHNE PRAKTYKI void free_string(struct string *s){ assert (a !■
rozwiązaniami płynącymi z praktyki. Uczelnia oprócz tego zapewnia możliwość biegłego opanowania
Image115 r W układach praktycznych należy dążyć do tego, aby stan 1 na wejściu synchronizującym trwa
Zdj?cie094 Uznałam, ze dobrym rozwiązaniem byłaby śmierć na raty. Ana mi ją gwarantowała Oprócz
Img10304 a@c a Jak dobrze współpracowały dzieci z przywódcą? CJ Co zauważyłem oprócz tego? koncentra
STRATEGIE NMR WYZNACZANIA STRUKTUR BIAŁEK W ROZTWORZE 31 nów amidowych HN jest szeroki i oprócz tego
POLITECHNIKA ŚLĄSKA Obecnie na Politechnice Śląskiej funkcjonuje Oprócz tego w uczelni funkcjonują
I WSTĘP Powody praktyczne i przesłanki teoretyczne podjęcia tego typu badań wynikają z faktu obarcza
page0023 R. LI. O aniołach w porównaniu do ciał 15 Zarzut drugi. Oprócz tego Grzegorz w Homliji
page0025 R. LI. O aniołach w porównaniu do ciał 17 Zarzut trzeci. Oprócz tego aniołowie nie przybier
page0036 28 Summa teologiczna Zarzut trzeci. Oprócz tego ruch odbywa się tylko dla potrzeby. Lecz św
page0046 38 Summa teologiczna Zarzut trzeci. Oprócz tego, jeśli dwa krańce przeciwne są czemś jednem
page0057 R. LV. O środkach poznania anielskiego 49 Zarzut trzeci. Oprócz tego idee, które są w
page0059 R. LV. O środkach poznania anielsk:ego 51 Zarzut drugi. Oprócz tego to, co się poznaje
page0069 R. LVII. O poznaniu aniołów w odniesieniu do rzeczy materjalnych 61 Zarzut trzeci. Oprócz t
page0104 96 Summa teologiczna Zarzut trzeci. Oprócz tego, każde kochanie jest albo prawowite albo ni

więcej podobnych podstron