Kurs programowania w C cz. 33

Nasza ocena:

5
Pobrań: 7
Wyświetleń: 749
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C cz. 33 - strona 1

Fragment notatki:

OPERACJE BITOWE 47 "~" | 0 1 "&" | 0 1 "|" | 0 1 "^" | 0 1 -----+----- -----+----- -----+----- -----+----- | 1 0 0 | 0 0 0 | 0 1 0 | 0 1 1 | 0 1 1 | 1 1 1 | 1 0 a | 0101 = 5 b | 0011 = 3 -------+------ ~a | 1010 = 10 ~b | 1100 = 12 a & b | 0001 = 1 a | b | 0111 = 7 a ^ b | 0110 = 6 Lub bardziej opisowo: • negacja bitowa daje w wyniku liczbę, która ma bity równe jeden tylko na tych pozycjach, na których argument miał bity równe zero; • koniunkcja bitowa daje w wyniku liczbę, która ma bity równe jeden tylko na tych pozycjach, na których oba argumenty miały bity równe jeden (mnemonik: 1 gdy wszystkie 1); • alternatywa bitowa daje w wyniku liczbę, która ma bity równe jeden na wszyst- kich tych pozycjach, na których jeden z argumentów miał bit równy jeden (mne- monik: 1 jeśli jest 1); • alternatywa rozłączna daje w wyniku liczbę, która ma bity równe jeden tylko na tych pozycjach, na których tylko jeden z argumentów miał bit równy jeden (mnemonik: 1 gdy różne). Przy okazji warto zauważyć, że a ^ b ^ b to po prostu a. Właściwość ta została wykorzystana w różnych algorytmach szyfrowania oraz funkcjach haszujących. Alter- natywę wyłączną stosuje się np. do szyfrowania kodu  wirusów polimorficznych. Przesunięcie bitowe Dodatkowo, język C wyposażony jest w operatory przesunięcia bitowego w lewo (“ ”). Przesuwają one w danym kierunku bity lewego argumentu o liczbę pozycji podaną jako prawy argument. Brzmi to może strasznie, ale wcale takie nie jest. Rozważmy 4-bitowe liczby bez znaku (taki hipotetyczny unsigned int), wówczas: a | a1 | a2 ------+------+------+------+------ 0001 | 0010 | 0100 | 0000 | 0000 0011 | 0110 | 1100 | 0001 | 0000 0101 | 1010 | 0100 | 0010 | 0001 1000 | 0000 | 0000 | 0100 | 0010 1111 | 1110 | 1100 | 0111 | 0011 1001 | 0010 | 0100 | 0100 | 0010 ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz