Ok, ich versuch mal es zu erklären...
Die 1, also binär 00000001, wird mit dem Linksshift-Operator um j Stellen nach links geschoben. (es wird quasi das Bit "j" gesetzt)
Das resultierende Bitmuster wird anschließend und-verknüpft mit Port.
d.h. der gesamte Ausdruck liefert 0, wenn Bit-j in Port nicht gesetzt ist und sonst eben eine Zahl ungleich 0.
Hier mal zwei Rechenbeispiele:
Code:j = 5 => (1 << j) = 00100000 Port = 11010010 (Port & (1 << j)): 11010010 & 00100000 ---------- = 00000000 = 0 j = 6 => (1 << j) = 01000000 Port = 01110100 (Port & (1 << j)): 01110100 & 01000000 ---------- = 01000000 = 64
Lesezeichen