Code:
#include <iostream>

int main(void){
     unsigned int foo = 0xFFFFFFFF;

     //i'd think these would return the same result, but
     //they don't in visual studio 2010 (debug/release).  why?
     std::cout<< (foo << 32) << " " << (0xFFFFFFFF << 32) <<std::endl;
     return 0;
}
This came up cause I was trying to clear bits in a loop and some cases required clearing the entire value. I was trying to do so in a branch-free manner.