Kurs programowania w C cz.34

Nasza ocena:

5
Wyświetleń: 595
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

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

Fragment notatki:

48 ROZDZIAŁ 8. OPERATORY Nie jest to zatem takie straszne na jakie wygląda. Widać, że bity będące na skraju są tracone, a w “puste” miejsca wpisywane są zera. Inaczej rzecz się ma jeżeli lewy argument jest liczbą ze znakiem. Dla przesunięcia bitowego w lewo a  1 | a2 ------+------+------ 0001 | 0000 | 0000 0011 | 0001 | 0000 0101 | 0010 | 0001 1000 | 1100 | 1110 1111 | 1111 | 1111 1001 | 1100 | 1110 Przesunięcie bitowe w lewo odpowiada pomnożeniu, natomiast przesunięcie bitowe w prawo podzieleniu liczby przez dwa do potęgi jaką wyznacza prawy argument. Jeżeli prawy argument jest ujemny lub większy lub równy liczbie bitów w typie, działanie jest niezdefiniowane. #include  int main () { int a = 6; printf ("6  2 = %d\n", a2); /* wypisze 1 */ return 0; } Porównanie W języku C występują następujące operatory porównania: • równe (“==”), • różne (“!=”), • mniejsze (“ ”), • mniejsze lub równe (“

(…)

… jest niezdefiniowane1 .
Dla przesunięcia bitowego w lewo, jeżeli lewy argument jest nieujemny to operacja
zachowuje się tak jak w przypadku liczb bez znaku. Jeżeli jest on ujemny to zachowanie
jest zależne od implementacji.
Zazwyczaj operacja przesunięcia w lewo zachowuje się tak samo jak dla liczb bez
znaku, natomiast przy przesuwaniu w prawo bit znaku nie zmienia się2 :
a
| a>>1 | a>>2
------+------+-----0001 | 0000…
… wskazywanej przez wartość NULL czy do zmiennych poza tablicą.
2 ale jeżeli zależy Ci na przenośności kodu nie możesz na tym polegać

... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz