Разделы

2.4.5. Побитовые операторы

Побитовые операторы позволяют считывать и устанавливать конкретные биты целых чисел.

Побитовые операторы

Пример Название Результат
a & b И Устанавливаются только те биты, которые установлены и в a, и в b.
a | b Или Устанавливаются те биты, которые установлены в a или в b.
a ^ b Исключающее или Устанавливаются только те биты, которые установлены либо только в a, либо только в b, но не в обоих одновременно.
~a Отрицание Устанавливаются те биты, которые не установлены в a, и наоборот.
a << b Сдвиг влево Все биты переменной a сдвигаются на b позиций влево (каждая позиция подразумевает "умножение на 2")
a >> b Сдвиг вправо Все биты переменной a сдвигаются на b позиций вправо (каждая позиция подразумевает "деление на 2")

Побитовый сдвиг в s4g - это арифметическая операция. Биты, сдвинутые за границы числа, отбрасываются. Сдвиг влево дополняет число нулями справа, сдвигая в то же время знаковый бит числа влево, что означает что знак операнда не сохраняется. Сдвиг вправо сохраняет копию сдвинутого знакового бита слева, что означает что знак операнда сохраняется.

Используйте скобки для обеспечения необходимого приоритета операторов. Например, a & b == true сначала проверяет на равенство, а потом выполняет побитовое и; тогда как (a & b) == true сначала выполняет побитовое и, а потом выполняет проверку на равенство.

Оба операнда и результат выполнения << и >> всегда считаются за целое.