Побитовые операции. Битовые поля


Тема посвящена разработке программ с использованием побитовых операций, а именно, поразрядных логических операций и операций сдвига, а также битовых полей структур.

Побитовые или поразрядные операции обычно используются в программах, в которых возникает необходимость действий с битами. Операнды побитовых операций должны быть целого типа.

Побитовые (поразрядные) логические операции выполняются отдельно над каждым разрядом (битом) двоичного числа независимо от разряда, стоящего справа или слева. Данные операции обычно используют при сравнении двух двоичных чисел. Побитовые операции описываются следующим образом:

& (побитовое И) - результат равен 1, если при сравнении оба соответствующих разряда равны 1, в противном случае - 0, т.е. 123&25 = (01111011)&(00011001) = 00011001 =25;

| (побитовое ИЛИ) - результат равен 1, если любой из соответствующих разрядов равен 1, в противном случае - 0, т.е. 123| 25 = 01111011;

^ (побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ) - результат равен 1, если один из двух, но не оба соответствующих разряда, равен 1, в противном случае - 0, т.е.123^25 =01100010;

~ (побитовое отрицание или дополнение до 1) - каждая единица в разряде меняется на 0, а 0 на 1, т.е. ~123 = 10000100.

Побитовые операции сдвига имеют вид:

х << Ь (сдвиг влево) - сдвигаются биты (разряды) левого операнда х влево на число позиций, указанных правым операндом b; биты, сдвигаемые за левый предел левого операнда, теряются, а освобождающиеся справа позиции заполняются нулями, например, 01111011<<2 = 11101100;

х >> b (сдвиг вправо) - сдвигаются биты (разряды) левого операнда х вправо на число позиций, указанных правым операндом b. Биты, сдвигаемые за правый предел левого операнда, теряются. Для чисел типа unsigned (положительные, без знака) позиции, освобождающиеся слева, заполняются нулями. Для чисел со знаком освобождающиеся позиции могут заполняться значением знакового разряда (самого левого), поэтому лучше всего предварительно преобразовать операнд в беззнаковый тип.

Операции сдвига применяются для умножения или деления исходного опе­ранда на степень двух, т.е. х << n эквивалентно умножению х на 2n, а х >> n эквивалентно делению на 2n, если это число неотрицательно. 

Пример побитовых операций находится на следующей странице.

 


Читайте также

Пример побитовых операций

Тема посвящена разработке программ с использованием побитовых операций, а именно, поразрядных…

Классы

Фундаментальным механизмом ООП является понятие класса. Класс представляет собой....

Доступ к элементам класса

Доступ к элементам или полям класса можно осуществить тремя способами:

Наследование

Вновь создаваемый класс может наследовать элементы и свойства уже существующих классов.…



Комментарии (0)







Разрешённые теги: <b><i><br>Добавить новый комментарий: