^ è l'operatore binario "or esclusivo" (bitwise xor) ... se non lo conosci non importa ... in pratica modifica il valore di st, ogni volta, da 1 in 3 e da 3 in 1.