Scomponiamo l'espressione.

(Tmp_Data_PLC[x]<<8)
è una moltiplicazione (shift a sinistra). Il valore Tmp_Data_PLC viene moltiplicato per (2 elevato alla 8). Chiamiamo X questo risultato

(Tmp_Data_PLC[x+1] & 0x000000FF)
è un AND bit a bit. In pratica, con questa operazione vengono isolati gli ultimi 2 bit del valore Tmp_Data_PLC[x+1]. Chiamiamo Y questo risultato.

Y viene castato a int (posso supporre, quindi, che Tmp_Data_PLC sia una matrice di Long, altrimenti avrebbe poco senso).

Infine viene calcolato X | Y (è un OR bit a bit: il risultato avrà tutti i bit a 1 di X e tutti i bit a 1 di Y). Questo risultato viene, alla fine, castato a int perchè, se Tmp_Data_PLC è effettivamente una matrice di long (come ho ipotizzato), allora X sarà un long e l'OR bit a bit restituirà un valore long, che dovrà essere castato a int per poter essere assegnato a tmp, che evidentemente è di tipo int.


Ciao.