if ($cislo1 & $cislo2) ... jak to funguje ?

Ahoj,
nevite presne jak funguje takovyto zapis podminky "if"?

if ($cislo1 & $cislo2)

Udelal jsem si pokusny script (viz nize), ale neprisel jsem na to.

<?
$konstanta = 2;

for ($cislo=1;$cislo<=15;$cislo++)
{
if ($cislo & $konstanta) { echo "Konstanta " . $cislo . " vyhověla.<br><br>"; }
else { echo "Konstanta " . $cislo . " <b>nevyhověla</b>.<br><br>"; }
}
?>

Za konstantu si zkuste dat ruzna cisla a uvidite.
& je logický součin
Pokud chceš AND (tedy $cislo1 A $cislo2), musíš použít &&

Poradil bych ovšem manuál k PHP: výrazy a operátory
Naprostý základ.
Bitový AND (logický součin), značený &:

rozloží každé číslo na bity (převede do dvojkové soustavy) a ntý řád prvého operandu porovná s ntým řádem druhého operandu. jsou-li oba rovny 1, je výsledek taky jedna. jinak vyjde nula.

př. 13 & 7 = 1101b & 0111b = 0101b = 5

Potom toto číslo dávaš do if jako podmínka. 5 je true, protože není rovna nule. ale 0 už není true ;)
Nípal: Moc dík za stručné a jasné vysvětlení!

. (---.chello.upc.cz): A tobe gratuluji, jsi hvezda! :-p
2Honza: . (---.chello.upc.cz) ma pravdu. To, ze ti tady nekdo pomuze narychlo s 1 veci, aniz bys ty zaklady mel ti moc neda.
Nípal:
btw, k cemu je dobrej bitovej soucin? nebo treba bitova negace?
bitovej součin se používá zřídka, ale teoreticky by se hodil pro expertní systémy. řekněme, že máš výpovědi dvou svědků:

A: Byl vysokej, hubenej, hnědou bundu a šedivějící vlasy.

B: Byl vysokej, zavalitej, předvedl karate a měl černou bundu a šedivějící vlasy.

tato tvrzení bysme mohli rozložit na bity, první bit je výška, druhý hubenost, další schopnost karate, další hnědost bundy, další šedivost vlasů.

Pak
A: 1,1,0,1,1
B: 1,0,1,0,1

Z čehož můžete bitovým součinem vyvodit, že
C: 1,0,0,0,1
=> Byl vysokej a měl šedivějící vlasy. víc nevíme.

Teď si představ, že by svědků bylo mnohem více a popisovali by neuvěřitelný detaily... bitovou negací bys dospěl k faktům, které by byly jisté, na kterých se všichni svědci shodli ;)

Mno, nebudu to pitvat... bitovou negaci si nejsem jist, zda znám, já mám pro tyhle věci jiný pojmy, spíš si je pamatuju jako OR, AND, NAND, NOR, XOR apod.
Bitova negace by měla přehazovat bity, takže
100110110100
011001001011
alebo ak potrebuješ x prepínačov s hodnotou on/of posielať, napr ako parameter
takto to je dosť blbé:
index.php?1a=true&2a=true&3a=true&4a=true&5a=true&....100021a=true
jednoduchšie to je:
index.php?1a=33

33 => 100001 (prvý a druhý práklad nesúvisia hodnotami)
alebo => on/off/off/off/off/on