O también prueba esto...
int entero=-212;
int otroentero=53;
int unomas=0x5b87;
unsigned char copia1,copia2,copia3;
//para copiar los 8 bits MAS significativos
copia1=(unsigned int)entero>>8;
copia2=(unsigned int)otroentero>>8;
copia3=(unsigned int)unomas>>8;
//los resultados serían
copia1=0
copia2=0
copia3=0x5b=91
//para copiar los 8 bits MENOS significativos
copia1=(unsigned int)entero;
copia2=(unsigned int)otroentero;
copia3=(unsigned int)unomas;
//los resultados serían
copia1=212
copia2=53
copia3=0x87=135
Pruébalo, porque no recuerdo como se hace el casting de unsigned int con números de signo. Y existe la posibilidad de que el compilador te mande warnings en las operaciones, es normal porque hay que hacer 2 castings, pero por comodidad no puse un casting de unsigned char antes del unsigned int, no hay problema.