2. ♦ Znaczniki, zmienne i typy danych
Wynikiem jest więc 99, jako że w rezultacie operacji OR wyłączone zostają jedynie te bity , który były wyłączone i w pierwszym i w drugim operandzie; wszystkie pozostałe pozostają natomiast włączone. W linii 5. skryptu znajduje się kolejna operacja, którą jest przypisanie zmiennej y wartości wynikającej z działania x A 118. Operacja ta bitowo wygląda jak następuje:
00100010 (34)
01110110(118) 01010100 (84)
Wynikiem jest więc 84, wyłączone zostają bowiem wszystkie bity, które w pierwszym i drugim operandzie miały taką samą wartość Ostatnia operacja bitowa jest wykonywana w 7. linii skryptu. Jest to przesuniecie bitowe w prawo o jedno miejsce wszystkich bitów zapisanych w zmiennej y. Ponieważ w zmiennej y znajdowała się wartość 11010100, po przesunięciu zostanie w niej zapisana wartość 10101000, czyli ostatecznie y będzie zawierało wartość 168. Wykonanie całego skryptu spowoduje wyświetlenie w przeglądarce obrazu widocznego na rysunku 2.12. Warto zauważyć, że przesuniecie bitowe w prawo odpowiada mnożeniu wartości przez wielokrotność liczby 2. A zatem przesunięcie w prawo o jedno miejsce to pomnożenie przez 2, przesunięcie w prawo o dwa miejsca to pomnożenie przez 4, przesunięcie w prawo o trzy miejsca to pomnożenie przez 8 itd.
£lik tdycja ffidok
0) |,... http://lo calhost/index.php
^ Rozpocznij przygód... .; Aktualności 34
99
84
168
Operacje logiczne możemy wykonywać na argumentach, które posiadają wartość logiczną: prawda lub fałsz W PHP wartości te są oznaczane jako true i false. Jeśli zatem mamy przykładowe wyrażenie 0 < 1, to ma ono wartość logiczną true (prawda), jako że niewątpliwie zero jest mniejsze od jedności. Jeśli zaś mamy wyrażenie 1 > 10, to ma ono wartość logiczną fal se, jako że 1 na pewno nie jest większe od 10. Operacje logiczne to znane ze szkoły AND (iloczyn logiczny), OR (suma logiczna) oraz NOT (negacja logiczna). Postaci operatorów logicznych występujących w PHP przedstawia tabela 2.7. Występujące w tabeli dwa rodzaje iloczynu logicznego i sumy logicznej wykonują takie same operacje, mają jednak różny priorytet (zob. sekcja „Priorytet operatorów”).