В стародавние времена, когда процессоры были ещё слабыми они относительно медленно выполняли операции умножения и деления. Даже относительно часто используемые операции со степенями двойки. Так вот сдвиг на один бит влево есть умножение на два, на два бита — на четыре, на три бита — на восемь. Т.е. X shl N = x · 2 ᴺ, соответственно сдвиг вправо X shr N = x ÷ 2 ᴺ. Соответственно, для умножения и деления на степени двойки эффективнее было использовать сдвиг.
А для получения конкретного бита данных всегда использовалась конъюнкция (логическое И). Если нам надо было получить значение пятого бита мы просто применяли ассемблерную команду and ax, 32, за которой сразу шла инструкция условного перехода с проверкой нулевого значения jz или jnz. А вот как только все стали делать это ещё и со сдвигом, так компьютеры и тормозить стали.