Введение в побитовые операции в Go
Побитовые операции меняют отдельные разряды целого числа, а не его величину целиком. Работа идет с двоичным представлением: каждый разряд обрабатывают отдельно или сдвигают всю цепочку разрядов влево или вправо.
Такие приемы нужны для флагов, масок и
компактного хранения нескольких переключателей
в одном целом. Маска отмечает, какие разряды
трогают, а какие оставляют как были. Сдвиги
связаны со степенями двойки: сдвиг влево
умножает на 2, сдвиг вправо делит
нацело на ту же степень.
Не путайте побитовые знаки с логическими
&& и ||: те работают только
с булевыми значениями и не склеивают разряды
двух чисел.
В этом разделе сначала разберем соединение разрядов двух чисел, инверсию и сброс по маске, сдвиги и связку счетчика констант со сдвигом для степеней двойки. В конце закрепим тему на задачах с разрядами.