Salve, non riesco a capire come funziona la seguente funzione che rende zero se il sistema è big endian o 1 se è little endin...

codice:
int endian ( void ) {
	short magic, test; 
	char * ptr;
	magic =0xABCD; 
	ptr = (char *) &magic; 
	test = (ptr[1] << 8)  + (ptr[0]&0xFF); 
	return (magic == test); 

}
A mio parere l'and bit a bit con 255 non serve a niente, in quanto rende il numero contenuto in ptr[0]... e perchè c'è bisogno dello shift di 8??
per vedere se un sistema e little o big endian non basterebbe fare cosi ;

codice:
	short nuber = 89, test;  // valore che viene rapresentato in un solo byte 
	char ptr *  = &number;

	test = ptr[1];  // asegno il valore che è contenuto nella seconda parte del blocco di memmoria se il computer e little endian 
	return ( test == number);