At the risk of adding confusion, there is something else to be aware of:
If the int32 that your shifting is a signed value, then the most significant bit remains intact after the shift. So:
int32 ValA
ValA = 0x40000000
ValA >> 4
Produces 0x04000000
But careful:
int32 ValA
ValA = 0x80000000
ValA >> 4
Produces 0xF8000000
This makes sense from the twos complement arithmetic point of view, but is probably not what you want from the logical point of view of shuffling bits
If you don't want this behaviour, make your int32 a uint32 (that is 'unsigned'), then the most significant bit will always be filled with zero for each shift. So:
uint32 ValA
ValA = 0x40000000
ValA >> 4
Produces 0x04000000
And also:
uint32 ValA
ValA = 0x80000000
ValA >> 4
Produces 0x08000000