Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Algebra Boole'a XOR
patryczakowy
post
Post #1





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
patryczakowy
post
Post #3





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Speedy
post
Post #4





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

Ostrzeżenie: (0%)
-----


Parzystość nie ma tu nic do rzeczy. Jak sobie ten zapis rozrysujesz na bramkach logicznych, to będzie to wyglądało tak:

(IMG:http://img188.imageshack.us/img188/6459/schowek03l.jpg)

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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 21:31