Running the following code:
unsigned int right_shift_val = (0x20);
printf("right shift 0xFC0 [by 0x%x], method #1: 0x%x \n", right_shift_val, 0xFC0 >> right_shift_val);
printf("right shift 0xFC0 [by 0x20], method #2: 0x%x \n", 0xFC0 >> 0x20);
Yields the results:
right shift 0xFC0 [by 0x20], method #1: 0xfc0
right shift 0xFC0 [by 0x20], method #2: 0x0
Why are those two similar operations yield different results?