А чем отличается такое выражение 0x1 << 1 от обычного числа 1
0x1 — это запись 1 в шестнадцатиричном формате, где цифрам со значениями от 10 до 15 соответствуют буквы от A от F. Для цифр меньше A (10) разницы между десятичной и шестнадцатеричной записями нет.
<< 1 — это двоичный сдвиг на 1 разряд влево, для положительных чисел — как умножение на 2.
То есть результатом 0x1 << 1 будет 2.