Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]if ($a & 1)
Forum PHP.pl > Forum > Przedszkole
smiady
Co oznacza wyrażenie:
  1. if ($a & 1){
  2. }

Szukałem odpowiedzi w Googlach, ale nie znalazłem.
freemp3
Słabo szukałeś:
http://www.php.net/manual/en/language.operators.bitwise.php
smiady
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
wyrażenie z 1 posta zwraca true jeżeli $a jest nieparzysta
smiady
Czyli ogólnie można wywnioskować, że liczby nieparzyste w PHP są rozumiane jako wartość logiczna prawda ?
widmo_91
Nie, można z tego rozumieć, że wszystkie dane zapisywane w pamięci komputera są w postaci sekwencji bitów.
freemp3
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.