Битовые операции
Все числа в памяти компьютера хранятся в двоичном виде, т.е. в виде последовательности 0 и 1. Для хранения чисел в памяти компьютера используется конечное число разрядов. Из-за этого числа в компьютере имеется ограниченный диапазон, а результаты вычислений могут быть неточными. Для хранения целого числа может быть использовано 8, 16, 32 или 64 бита памяти. Каждый дополнительный бит расширяет диапазон возможных значений в 2 раза.
Операции с положительными и отрицательными числами выполняются в процессоре по одним и тем же алгоритмам.
С помощью поразрядных логических операций можно управлять отдельными битами регистров процессора и внешних устройств.
Операция C++ |
Назначение |
a & b |
Побитовое И для a и b |
a | b |
Побитовое ИЛИ для a и b |
a ^ b |
Исключающее ИЛИ для a и b |
~a |
Инверсия битов для a |
a << b |
Побитовый сдвиг влево для a на b |
a >> b |
Побитовый сдвиг вправо для a на b |
Операция И
С помощью
операции «И
» можно сбросить (установить в ноль) биты, для которых маска равна 0!
Маска – константа, которая определяет область применения логической операции к битам многоразрядного числа.
D
- данные,
М
- маска
Операция ИЛИ
С помощью
операции «ИЛИ
» можно записать единицу в биты, для которых маска равна 1!
Операция исключающее ИЛИ
С помощью
операции «исключающее ИЛИ
» можно инвертировать биты, для которых маска равна 1!
Сдвиг влево
Логический (побитовый)
сдвиг влево на 1
разряд увеличивает целое положительное число вдвое.
Сдвиг вправо
Логический (побитовый) .
сдвиг вправо на 1
делит целое положительное число нацело на 2.
Поскольку при сдвиге вправо на освобождающиеся позиции устанавливается бит знака, знак числа
x
можно определить, выполнив сдвиг вправо на всю длину переменной.