I have the following c code:
int foo = 0;
printf("output1: %08x\n", (~0x0) << (~0));
printf("output2: %08x", (~0x0) << (~foo));
which prints out:
output1: ffffffff
output2: 80000000
Why does shifting by the same number produce a different result?