Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kurs_7_var.doc
Скачиваний:
3
Добавлен:
03.09.2019
Размер:
601.09 Кб
Скачать

Поразрядные операции

Поразрядные операции (табл. 2.4) работают с целыми числами и опери­руют с их двоичными представлениями. Они позволяют обеспечить доступ к каждому биту информации.

Таблица 2.4

Обозначение

Операция

Пример

~

отрицание

-1011=0100

&

И

X&Y

1011 &1010=1010

|

или

X | Y

101111010=1011

^

исключающее ИЛИ

X ^ Y

1011л1010=0001

<<

сдвиг влево

Х«2

1011 «2=1100

>>

сдвиг вправо

Y»I

1011» 2=0010

Операция поразрядного отрицания (~) инвертирует каждый бит операнда: на 1, 1 -наО.

Поразрядные операции &, |, л работают в соответствии со следующей таблицей, где а и b — сравниваемые биты операндов:

а

b

a&b

a^b

a|b

0

0

0

0

0.

1

0

0

1

1

0

1

0

1

1

1

1

1

0

1

Поразрядные операции удобны для организации хранения в сжатом виде информации о состоянии on/of (включен/выключен). В одном байте можно хранить 8 таких флагов. Если переменная ch является хранилищем таких фла­гов, то проверить, находится ли флаг, содержащийся в третьем бите, в состоя­нии on, можно следующим образом:

if(ch&4)... Эта проверка основывается на двоичном представлении числа 4=00000100.

Заметьте, что выражение a^b^a всегда возвращает а. Эта закономерность часто используется в растровой графике. Выражение a^a всегда возвращает 0.

Операции поразрядного сдвига » и « сдвигают биты левого операнда на число разрядов, указанное правым операндом, соответственно вправо или влево. Недостающие значения битов дополняются нулями. Сдвиг целого числа на п разрядов вправо эквивалентен целочисленному делению его на 2". Сдвиг целого числа на п разрядов влево эквивалентен умножению его на 2".

Пример: двоичное представление числа х=9: 00001001, тогда

х=9«3 01001000

х=9»3 00000001

х=9 » 5 00000000

При применении операции сдвига может происходить потеря старших или младших разрядов. Применение операций » и « по очереди к одной и той же переменной может изменить значение этой переменной из-за потери разрядов.

Приоритет операций

Ниже приведена таблица операций, расположенных в порядке убывания их приоритетов.

( )

++ -- ~ !

* / %

+ -

>> <<

< <= > >=

== !=

&

^

|

&&

||

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]