@razor sagte in c übungsbeispiel:
bzw wird der wert 1234 als ganzes an die funktion (Z1) übergeben.
Klar. Wie sonst?
in der schleife werden über sizeof 2 bytes von "n" durch die short variable aufgerufen und mit 8 multipliziert aber wie werden die einzelnen bits hier sozusagen "herasuextrahiert" damit die ausgegebn werden oder wird jede ziffer 1 2 3 4 extra aufgerufen?
Wenn du irgendeine Zahl hast, beispielsweise 76, und schreibst das mal binär hin: 01001100
Jetzt willst du beispielsweise das dritte Bit von rechts wissen (in deinem Programm i=2, weil wir bei 0 anfangen, das erste Bit von rechts wäre also i=0). Dazu verschiebst du die Binärdarstellung um i=2 Stellen nach rechts (in deinem Programm das n >> i). Kommt raus 00010011 (die beiden Stellen, die rechts raus gerutscht sind, gibt's nicht mehr).
Jetzt steht das Bit, an dem du interessiert bist, an der Stelle ganz rechts, aber du musst noch rausfinden, ob es eine 0 oder eine 1 ist. Du musst also alles links davon wegwerfen. Dazu maskierst du es mit der Zahl 1 (in deinem Programm & 1). Beim Maskieren bleiben genau die Bits der Maske unverändert, und alles andere wird 0. Wenn du nur genau mit 1 maskierst (Binärdarstellung 00000001) bleibt also genau das rechteste Bit unverändert, alles andere wird 0. Im Beispiel bleibt also 00000001 == 1. Und das ist dann der Wert des dritten Bits von rechts.