Одним из полезных применений сдвига битов является Арифмети c Сдвиг , в котором вы используете сдвиг битов, чтобы выполнять определенные операции умножения или деления более эффективно, чем если бы это делалось традиционным способом.
Сдвиг влево на n битов двоичного числа со знаком или без знака приводит к умножению его на 2 ^ n. Сдвиг вправо на n битов двоичного числа со знаком, дополняющего два, приводит к его делению на 2 ^ n, но оно всегда округляется (в сторону отрицательной бесконечности).
В качестве примера возьмем следующее python код.
base = 5
traditional = 5 * 8 # or 5 * 2**3
shifted = 5 << 3
assert shifted == traditional
В этом примере вы можете видеть, что оба они дают один и тот же результат, просто получая его двумя разными способами. Это то, что ваш компилятор будет делать изнутри, чтобы оптимизировать математические операции c, когда он знает во время компиляции, что множитель является степенью 2