Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Algebra Boole'a XOR
Forum PHP.pl > Inne > Hydepark
patryczakowy
Nie wiem czy dobry dział wybrałem, ale trudno mam pytanie chodzi mi o alternatywę wykluczającą XOR czyli prawda jest wtedy kiedy tylko jedno zdanie jest prawdziwe:
0110
0101
-----
0011
tu jest wszystko proste ale nie mogę zrozumieć jak podejść do tematu kiedy jest więcej ciągów np
10000
11000
11100
11110
11111
-----
jaki będzie wynik powyższej operacji jak się na to patrzyć?
nospor
no analizujesz po kolei
1
1
1
1

czyli najpierw porownujesz dwie pierwsze liczby 1 xor 1 = 0
0
1
1

teraz porownujesz 0 xor 1 = 1
1
1

no i teraz 1 xor 1 = 0

czyli 1 xor 1 xor 1 xor 1 = 0;
analogicznie reszta

czyli ostatecznie:
10000
11000
11100
11110
11111
-------
10101
patryczakowy
Wielkie dzięki teraz kumam nawet przejrzałem szybko tablicę operatorów logicznych dla php i widzę że tu też możemy korzystać z xor.
Tylko z tego co zaważyłem to kolejność niema tu żadnego znaczenia czyli nieważne czy będę czytał od dołu czy od góry na przemian czy od środka wynik zawsze jest jeden jak jestem w błędzie to niech mnie ktoś poprawi.
Czyli taki zapis
  1. <?php
  2. if($zm1 xor $zm2 xor $zm3 xor $zm4 xor $zm5 xor $zm6 xor $zm7)
  3. ?>

będzie spełniony tylko wtedy gdy nieparzysta liczba zmiennych przyjmie true? Nieważne które byle było nieparzyście?
Speedy
Parzystość nie ma tu nic do rzeczy. Jak sobie ten zapis rozrysujesz na bramkach logicznych, to będzie to wyglądało tak:



A php-ie masz tak:

Oba zapisy wypluwają to samo, ale ten drugi pokazuje kolejność wykonywania działań. Po prostu te zmienne tak jakby "wchłaniają" się od lewej strony za pomocą xor-ów.

  1. <?php
  2.  
  3. $zm1 = 1;
  4. $zm2 = 1;
  5. $zm3 = 0;
  6. $zm4 = 1;
  7.  
  8. echo 'zapis nr 1<br/>';
  9.  
  10. if($zm1 xor $zm2 xor $zm3 xor $zm4)
  11.    echo 'TRUE';
  12. else
  13.    echo 'FALSE';
  14.    
  15. echo '<br/>zapis nr 2:<br/>';
  16.    
  17. if( ( ($zm1 xor $zm2) xor $zm3 ) xor $zm4)
  18.    echo 'TRUE';
  19. else
  20.    echo 'FALSE';
  21.  
  22. ?>
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.