smiady
22.07.2013, 10:51:14
Co oznacza wyrażenie:
if ($a & 1){
}
Szukałem odpowiedzi w Googlach, ale nie znalazłem.
freemp3
22.07.2013, 10:58:33
smiady
22.07.2013, 11:05:48
I jak mam kolejno to interpretować ?
0 & 1 - czyli falsz i prawda daje nam falsz
1 & 1 - czyli prawda i prawda daje nam prawda
2 & 1 - ?
3 & 1 - ?
itd.
0,1 to inaczej falsz, prawda a wartosci wyzsze jak sa interpretowane ?
widmo_91
22.07.2013, 11:21:54
wyrażenie z 1 posta zwraca true jeżeli $a jest nieparzysta
smiady
22.07.2013, 11:27:03
Czyli ogólnie można wywnioskować, że liczby nieparzyste w PHP są rozumiane jako wartość logiczna prawda ?
widmo_91
22.07.2013, 11:36:49
Nie, można z tego rozumieć, że wszystkie dane zapisywane w pamięci komputera są w postaci sekwencji bitów.
freemp3
22.07.2013, 11:38:15
Operator & jest operatorem bitowym "AND". Oznacza to, że wyrażenie jest rozbiane na poszczególne bajty, które są ze sobą porównywane.
Można to porównać do dwóch tablic, gdzie wartościami są zera i jedynki, a wynik porównania zapisywany jest w trzeciej. Porównując kolejne elementy tablic sprawdzamy czy w obu wartościami są jedynki. Jeśli tak to w wynikowej tablicy zapisywana jest jedynka, jeżeli nie to zapisane zostaje 0.
Dla przykładu dla liczby 1 wartość bitowa wygląda tak: 00000001. Jeśli porównamy z liczbą 2 gdzie wartość bitowa wygląda tak: 00000010 to operator wykona taką operację:
00000010 - liczba 2
00000001 - liczba 1
-----------
00000000
Jak widać nigdzie jedynki się nie pokrywają więc wynikiem będzie 0.
Dla liczby 5 na przykład wartość bitowa wygląda tak: 00000101 więc operacja porówniania będzie wyglądać tak:
00000101 - liczba 5
00000001 - liczba 1
-----------
00000001
Jak widać jedynki na początku się pokrywają więc wynikiem jest liczba 1.
Tak więc w tym wypadku jak widać wyrażenie szuka liczb nieparzystych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.