关于移位符号的一个有关问题

关于移位符号的一个问题intmain(void){longaDataLH8charoutSndBuf[4]outSndBuf[0]aDataLH&0xFFoutSnd

关于移位符号的一个问题
int   main(void)
{
long   aDataLH   =   8;
char   outSndBuf[4];
outSndBuf[0]   =   aDataLH   &   0xFF;
outSndBuf[1]   =   (   aDataLH   &   0xFF00   )   > >   8;  
outSndBuf[2]   =   (   aDataLH   &   0x00FF0000   > >   16   );  
printf( "%02x,%02x,%02x\n ",outSndBuf[0],outSndBuf[1],outSndBuf[2]);

return   0;
}
第3个不能正确输出,这是为什么呢
要怎么办修改才好呢
谢谢


[解决办法]
outSndBuf[2] = ( aDataLH & 0x00FF0000) > > 16 ;