Я полностью понимаю, как сдвигать биты. Я проработал множество примеров на бумаге и в коде, и мне здесь не нужна помощь.
Я пытаюсь привести несколько реальных примеров того, как используется битовый сдвиг. Вот несколько примеров, которые мне удалось придумать:
Возможно, самый важный пример, который я мог придумать, был связан с порядком байтов. В системах с прямым порядком байтов наименее значимые биты хранятся слева, а в системах с прямым порядком байтов наименее значимые биты хранятся справа. Я полагаю, что для файлов и сетевых передач между системами, которые используют стратегии обратного порядка байтов, необходимо выполнить определенные преобразования.
Кажется, что компиляторы и процессоры могут произвести определенную оптимизацию при работе с любыми умножениями, равными n ^ 2, n ^ 4 и т. Д. Биты просто сдвигаются влево. (И наоборот, я полагаю, то же самое применимо к делению, n / 2, n / 4 и т. Д.)
В алгоритмах шифрования. Т.е. использовать серию битовых сдвигов, реверсов и комбинаций, чтобы что-то запутать.
Все ли эти примеры точны? Вы бы что-нибудь добавили? Я потратил довольно много времени на изучение того, как реализовать битовый сдвиг / переупорядочение / байтовую замену, и я хочу знать, как это можно применить на практике =)