Не большой спец в теоретической части, но работу побитового сдвига представляю так:
int x = 4;
1)Берётся двоичное представление числа: 0000 0000 0000 0100
2)И оно тупо сдвигается налево/направо на n-позиций
3)Т.к. каждая единица это 2^(позиция),
происходит грубо говоря умножение/деление на 2(n-раз)