Поразрядные операции
Каждая переменная, объявленная в программе занимает в ОП некоторый участок, который содержит столько байт, сколько требует для размещения в ОП тип переменной. В свою очередь каждый байт – совокупность из восьми бит. Бит – это минимальная единица хранения информации в памяти компьютера. В языке С++ изменять значение переменной можно не только при помощи операции присваивания (т.е. целиком), но и с помощью поразрядных операций (по битам). Поразрядные операции называют побитовыми операциями – операции, с помощью которых можно изменять значение переменной по битам. Побитовыми операциями являются проверка (логические), сдвиг и присвоение значения битам данных. Такие операции могут осуществляться только над переменными типа int или char. Побитовые операции и результаты их работы приведены в табл.7.
Таблица 7 | |||||
Значение операнда 1 (оп1) | Значение операнда 2 (оп2) | Название операции | |||
Поразрядное отрицание | Исключающее ИЛИ | Поразрядное И | Поразрядное ИЛИ | ||
~(оп1) | (оп1)^(оп2) | (оп1)&(оп2) | (оп1)|(оп2) | ||
Результат | |||||
При помощи операций легко проверить «состояние» того или иного бита переменной. Для этого на переменную «накладывают» маску – переменную, которая содержит проверяемую последовательность 0 и 1. Типы маски и переменной, на которую накладывается маска, должны совпадать. Наложение осуществляется при помощи операций ^, &, | :
|
~00110010 == 11001101
^ | & | | | |||
Кроме поразрядных операций (см. табл.7) существуют две побитовые операции сдвига: << – операция сдвига всех битов переменной влево; >> – операция сдвига всех битов переменной вправо. При использовании этих операций указывается число разрядов, на которое происходит сдвиг битов вправо или влево. Побитовый сдвиг не является циклическим, т.е. если при сдвиге битов произошел выход за границы участка ОП, где размещена изменяемая переменная, то вышедшие за границу биты теряются. С помощью операций сдвига можно умножать или делить переменную на число, кратное двум. Форма записи этих операций:
<имя_переменной> >> <количество_разрядов>;
<имя_переменной> << <количество_разрядов>;
Например,
p=p>>3; //значение переменной p уменьшается в 23 = 8 раз
c=c<<4; // значение переменной p увеличивается в 24 = 16 раз
Наиболее часто побитовые операции используются при системном программировании. Однако они бывают полезны и при решении прикладных задач.
Дата добавления: 2015-08-08; просмотров: 649;