Почему этот код работает по разному?
странный вопрос. это и должно работать по разному. в первом случае у вас условие до сдвига, во втором после сдвига.
Дошло. В первом случае идет просто сравнение, во втором сравнение результата сдвига.