С байтоёбством не поможет по очень простой причине: биты отдельно обычно задаются и извлекаются по порядку. Тебе достаточно знать порядковый номер бита, и пофигу как его изменение повлияет на исходное значение: оно тебе не в целом нужно, а только отдельные биты.
Ну и битовые сдвиги — это просто очень быстрое умножение или деление на два. Всё. Сдвинул — умножил/разделил.
Ну я понял, как они работают