
- •Содержание
- •Основные теоретические сведения:
- •Константы в языке с
- •Операции отношения и логические операции
- •Операции присваивания
- •Поразрядные операции
- •Приоритет операций
- •Функции языка с
- •Операторы языка с Условный оператор if
- •Операторы цыклов
- •Оператор цикла с параметром for
- •Понятие массива
- •Объявление одномерных массивов
- •Указатели
- •Понятие статической и динамической памяти
- •Двоичные файлы в с
- •Главный модуль Unit1.Cpp
- •Модуль «Про автора» Unit3.Cpp
- •Модуль «Задание» Unit2.Cpp
- •Модуль «Заставка» Unit4.Cpp
- •Список использованной литературы:
Поразрядные операции
Поразрядные операции (табл. 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
При применении операции сдвига может происходить потеря старших или младших разрядов. Применение операций » и « по очереди к одной и той же переменной может изменить значение этой переменной из-за потери разрядов.
Приоритет операций
Ниже приведена таблица операций, расположенных в порядке убывания их приоритетов.
( ) |
++ -- ~ ! |
* / % |
+ - |
>> << |
< <= > >= |
== != |
& |
^ |
| |
&& |
|| |