Mux Shield - Erklärung nötig

Hallo Forum,
Ich habe mir ein Mux Shield zugelegt und wollte nun wissen wie dieses im genauen Funktioniert.

Aus dem Beispiel (http://mayhewlabs.com/code/Mux_Shield_DigitalOut_Example.pde) ist mir klar geworden dass man über A0 - A2 die “bereiche” M0 - M2 ansteuert.

for (int i=0; i<16; i++) //Hiermit wird die schleife wiederholt bis i 16 erreicht oder?
{
digitalWrite(5, (i&15)>>3); // die fünf steht für Arduno pin 5 aber warum (i&15)>>3
// also das i and 15 zutreffen müssen ist mir klar… aber warum dann >>3?
digitalWrite(4, (i&7)>>2); //
digitalWrite(3, (i&3)>>1); //
digitalWrite(2, (i&1)); //
}

wieso hat man dann nicht einfach

digitalWrite(5, HIGH);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);

für Channel 1 (siehe Wahrheitstabelle http://www.ti.com/lit/ds/symlink/cd74hc4067.pdf)
Vielen dank für eure Antworten

In der Schleife läuft i von 0 bis 15. Von jedem Wert werden die niedrigen 4 Bit auf die 4 Pins ausgegeben. Etwas einheitlicher wäre (i>>n)&1, wobei n für 3 bis 0 Shifts steht.

// also das i and 15 zutreffen müssen ist mir klar…

Dann ist dir schon mal das falsche klar…
& ist ein binäres UND
&& ist ein logisches UND

achso