Zjištění - lichá a sudá

Asi nejzákladnějším rozdělením čísel je na lichá a sudá. Každý člověk to lehce pozná, ale co program? Většina programátorů to řeší mě donedávna jediným způsobem který znám. Je to zbytek po dělení.


  1. $a = 6;
  2. if($a %2 )
  3.   echo 'liche';
  4. else
  5.   echo 'sude';

Bohužel si nepamatuji kde to bylo, ale viděl jsem další řešení. To řešení staví na na bitových operacích.

Pokud budeme mluvit jen o celých číslech tak poslední bit toho čísla je vlastně 2^0, což je jedna. Právě existence téhle jednicku určuje tu lichost nebo sudost čísla. Po téhle teorii už není problém sestavit kód. Použijeme bitový operator AND (&).

  1. $a = 6;
  2. if($a & 1)
  3.   echo 'liche';
  4. else
  5.   echo 'sude';

Pokud to není pochopitelné prostuduj te si uplné základy.

komentáře

RSS Komentáře k článku RSS Komentáře   Add to Google
07.09.2009 21:13 | Anonym (3CK) | Zajimavé

Zajímavá alternativa. Asi je to zbytečné, ale jen tak pro zajímavost, nějaké testy výkonu obou variant nejsou k dispozici?

07.09.2009 22:39 | Petr Čada | Re: Zajimavé

rychlostne je to uplne stejne, spis me slo o to ze to jde take udelat jinak. Pripravuju clanek o predavani funkci nastaveni.

vysvetleni jak funguje foo(NEJAKY_OPTION | DALSI_OPTION) a na to je potreba pochopeni bitovych operaci.

08.09.2009 11:19 | Administrátor | Re: Re: Zajimavé

řeším options vždy přes pole function($param­s=array()) zkoušel jsem i bitové operace, ale problém je když chceš míchat právě jednoduché options a pak vyloženě potřebuješ předat options typu key=>value, key=>arrayOfValues

ale určitě už se těším jak to vymyslíš :) kdyby se ti podařilo zamyslet se i nad tou kombinací, bylo by to fajn

Jméno
Název
Text
Lze používat Texy! syntax. Příklad syntaxe: "text odkazu":odkaz, **tučně**, *kurzíva*, `code`. PHP kód uzavírejte do <?php ... ?> a JavaScript do <script> ... </script>